【问题标题】:Create partial class for referenced assembly [duplicate]为引用的程序集创建部分类[重复]
【发布时间】:2012-08-17 21:11:50
【问题描述】:

可能重复:
Is it possible to declare a partial class in two projects

说在我的项目解决方案中,我有两个项目,ProjectA 和 ProjectB。 ProjectA 创建: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; }
    }

}

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

【问题讨论】:

    标签: c# partial-classes


    【解决方案1】:

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

    来自 MSDN Partial Class Definitions - Restrictions :

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

    【讨论】:

    • 展开;部分类更像是 IDE 功能而不是运行时功能,它告诉编译器多个源代码文件组合成一个实际的类。该类仍然必须位于二进制文件中的单个位置。
    • 呸,现在说得通了。哦,好吧,现在我必须稍微调整一下我的项目。谢谢:)
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        见:Should you use a partial class across projects?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-16
          • 2013-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-04
          相关资源
          最近更新 更多