我知道在命名空间中可以有很多类。 现在,是否可以在多个程序集(.dll文件)中创建一个类?
答案 0 :(得分:4)
不,你不能跨越多个集会的班级
如果您在Namespace1.Class1
&中创建assembly1
Namespace1.Class1
中的assembly2
,然后您引用项目中的两个程序集,您将拥有:
The type 'Namespace1.Class1' exists in both 'assembly1.dll' and 'assembly2.dll' ...
答案 1 :(得分:1)
我认为这是不可能的。最多,您可以在同一程序集(部分类)中的多个文件中生成类定义。
答案 2 :(得分:1)
如果在两个单独的命名空间中定义两个类,则有两个不同的类,它们存在于两个不同的命名空间中,它们彼此之间没有任何关系。对于CLR,它们看起来像这样:
NamespaceA.ClassA
NamespaceB.ClassA
即使您将它们标记为部分,它们仍然是不同命名空间中的不同类。这是因为在编译类时,名称空间只是前缀为类的名称。除此之外,CLR不知道命名空间或部分类的概念。这都是编译魔术。
澄清:定义部分类型时,您正在定义类型。类型从不拆分在程序集或命名空间中。
答案 3 :(得分:0)
即使可以,你为什么要这样做呢?这样做会解决哪些技术或业务问题? .NET具有部分类,允许您在需要时将类扩展到多个文件。您还可以使用扩展方法扩展类的行为,您可以在与要扩展的类不同的程序集中定义方法。