单独的dll中的部分类

时间:2010-10-04 19:57:33

标签: c# dll partial-classes

是否可以在单独的DLL中将两个部分(相同的命名空间,相同的类名)分配给部分类?

7 个答案:

答案 0 :(得分:214)

来自MSDN -Partial Classes and Methods

  

所有部分类型定义都意味着   必须是同一类型的部分   在同一个程序集中定义   相同的模块(.exe或.dll文件)。   部分定义不能跨越   多个模块。

答案 1 :(得分:35)

没有。部分类是纯语言功能。编译程序集时,将合并文件以创建该类型。无法将文件传播到不同的程序集中。

根据您的目的,您可以使用extension methods来完成您的需要。

答案 2 :(得分:12)

不,不可能。编译程序集时,需要完成该类。

答案 3 :(得分:5)

如果要将方法添加到其他dll中的类,可以使用扩展方法。 这种方法的一个缺点是你不能添加静态方法。

答案 4 :(得分:5)

虽然其他答案确实提供了令人不愉快的“否”,任何登陆此页面的人都不想看到或听到,但我对此处尚未提及的另一个想法感到震惊。如果跨程序集允许部分类,则可以访问未由他编写的现有类型的私有成员,从而允许他以原作者不想要的方式操作它们,从而危及所有继承类的功能太

不仅如此,其他程序集(及其子程序)中的那些类需要重新编译才能使其正常工作。因此,逻辑上不可能允许在不同的程序集上拆分类。

答案 5 :(得分:3)

问题是为什么要在另一个程序集中创建一个局部类?您可以跨程序集定义抽象类和接口,也许您需要查看它。

答案 6 :(得分:0)

您可能只想在自己的库中围绕第3部分库中的类创建Wrapper类。然后将任何功能添加到包装器类。