单独的dll中的部分类

问题描述 投票:144回答:6

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

c# dll partial-classes
6个回答
217
投票

来自MSDN -Partial Classes and Methods

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


35
投票

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

但是,根据您的想法,您可以使用extension methods来完成您的需要。


12
投票

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


5
投票

如果要将方法添加到其他dll中的类,可以使用扩展方法。此方法的一个缺点是您无法添加静态方法。


5
投票

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

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


3
投票

问题是为什么你想在另一个集合中进行局部分类?您可以跨程序集定义抽象类和接口,也许您需要研究它。

© www.soinside.com 2019 - 2024. All rights reserved.