164

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

4

7 回答 7

246

来自MSDN -部分类和方法

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

于 2010-10-04T19:59:16.543 回答
38

不,部分课程是纯粹的语言功能。编译程序集时,将组合文件以创建类型。不可能将文件分散到不同的程序集中。

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

于 2010-10-04T19:59:44.393 回答
14

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

于 2010-10-04T19:59:20.083 回答
13

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

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

于 2017-05-17T11:30:39.917 回答
8

当您想将方法添加到不同 dll 中的类时,可以使用扩展方法。这种方法的一个缺点是您不能添加静态方法。

于 2010-11-08T10:25:21.027 回答
3

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

于 2010-10-04T20:14:15.330 回答
2

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

于 2019-09-05T08:10:50.157 回答