单独 dls 中的分部类

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

47811 次浏览

来自 部分类和方法:

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

不,这是不可能的。当程序集被编译时,这个类需要被完成。

没有。部分类是纯语言特性。编译程序集时,将组合这些文件以创建类型。不可能将文件分散到不同的程序集中。

但是,根据您想要做的事情,您可以使用 扩展方法来完成您需要的任务。

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

当您希望向不同 dll 中的类添加方法时,可以使用扩展方法。 此方法的一个缺点是不能添加静态方法。

虽然其他的答案确实提供了令人不快的“不”,任何人登陆这个页面都不想看到或听到,我被另一个还没有在这里提到的想法所打动。如果允许跨程序集使用分部类,则可以访问不是由他编写的现有类型的私有成员,从而允许他以原始作者不希望的方式操作这些成员,从而危及所有继承类的功能。

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

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