internal partial class Class1
{
private class Class2 : ISomething, ISomethingElse
{
private class Class3 : ISomething
{
}
}
}
我希望Class3
本身托管另一个私有Class4
,但这会使Class3
太大,所以我想让Class3
偏。我知道如何对非嵌套类进行此操作。如何在单独的文件中将嵌套类部分化?
答案 0 :(得分:22)
这个article声明即使它们的父类不是部分的,也可以创建嵌套类partial
。但是你不能在几个文件中将它们分开,所以我认为你也需要使Class2
partial
和你的第一级类一样分裂,保持partial class
层次结构
我真的希望这个问题只是因为好奇心。
编辑:试过这个 - 工作正常。
partial class c1
{
partial class c2
{
class c3
{
}
}
}
partial class c1
{
partial class c2
{
}
}
答案 1 :(得分:1)
如果嵌套类需要出于任何原因进行分区,那么还需要对所有者类进行分区。嵌套类代码也是所有者类代码 - 它是一种组合关系。
因此,提取嵌套类的一部分意味着同时提取其所有者的一部分。 反过来,我们需要“查看完整路径”到每个分部类,以便编译器可以识别完全指定的类型。
与命名空间相同 - 与类不同,它们在某种程度上是隐式的,因为我们不希望在同一个文件中使用整个命名空间,而我们通常这样做是为了类,尤其是嵌套的。
通常我们需要在包含嵌套类的部分文件的文件中写入
MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB
定义如下:
namespace MyTopNamespace
{
namespace MyLevel2Namespace
{
partial class MyTopLevelClass
{
partial class MyNestedClassA
{
// Part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
}
class MyOtherNestedClassNotPartitioned
{
...
}
partial class MyNestedClassB
{
// Part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB
}
}
}
}
并在另一个文件中嵌套类的其他部分后缀'A'定义如下:
namespace MyTopNamespace { namespace MyLevel2Namespace { partial class MyTopLevelClass { partial class MyNestedClassA { // Another part of definition for our nested class: // MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA } } } }
并且在另一个文件中,嵌套类的其他部分后缀'B'定义如下:
namespace MyTopNamespace { namespace MyLevel2Namespace { partial class MyTopLevelClass { partial class MyNestedClassB { // Another part of definition for our nested class: // MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB } } } }
或者我们可以在其他文件中定义两个嵌套类的部分等,但我们总是需要完全指定定义类类型的位置。