3

可能重复:
是否可以在两个项目中声明部分类

说在我的项目解决方案中,我有两个项目,ProjectA 和 ProjectB。项目A创建:MyClassA

然后 ProjectB 引用了 ProjectA。是否可以在 ProjectB 中为 ProjectA 的 MyClassA 创建部分类?

我的项目 A 的 MyClassA:

namespace TestPartial
{
    public class MyClassA
    {
        public string MyName { get; set; }
    }
}

我的项目 B 的 MyClassB:

namespace TestPartial
{
    public partial class MyClassA
    {
        public DateTime BirthDate { get; set; }
    }

}

但显然这两个属性都没有合并....所以我猜只有它们在同一个项目中才有效?或者有一些解决方法?

4

4 回答 4

7

不,部分类不能跨越多个项目/程序集。

来自 MSDN部分类定义 - 限制

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

于 2012-08-17T21:14:07.283 回答
3

是否可以在 ProjectB 中为 ProjectA 的 MyClassA 创建部分类?

不。部分类只是一种语言级别的功能,用于组合多个文件以创建单个输出类。这不是 CLR 知道的,您不能在程序集之间拆分类

如果您可以提供有关您要达到的目标的更多信息,我们可能会推荐替代方案。您可能想要使用组合,或者可能是继承。

于 2012-08-17T21:14:40.107 回答
0

不,必须在同一程序集(dll 或 exe)中完全定义部分类。您不能拥有跨两个程序集的部分类。

于 2012-08-17T21:14:37.510 回答
0

这不是 Jon Skeet 所说的,这可能意味着它不是。

请参阅:您是否应该跨项目使用部分类?

于 2012-08-17T21:16:04.160 回答