我可以在nuget包中进行部分课程吗?

时间:2017-03-01 06:35:03

标签: c# nuget nuget-package

我正在构建一个nuget包,该包将在企业中的许多项目中共享。它本质上是实体框架模型。在某些时候,这些类是从数据库中搭建的,并且生成的类都被定义为部分类(所有示例仅用于说明目的):

public partial class Customer { ... }
public partial class Order { ... }

有些项目利用了这个partial并开发了超出数据库关注范围​​的其他功能:

public partial class Customer {
   // get distance from the office to customer home
   public decimal Distance { get { ... } }
}

允许在LINQ语句中使用此计算值:

from c in Customer where Distance < 100 select c

但是现在&#34;核心&#34;类集在nuget包中,类不再局限。有没有办法强迫nuget尊重partial属性?我意识到它的耦合太紧;但它会极大地简化来自&#34;嵌入式&#34;模型到nuget

2 个答案:

答案 0 :(得分:6)

在C#中,您无法利用部分机制将类的定义拆分为不同的程序集。

Please see msdn explanation.

扩展怎么样?使用同一名称空间中的方法在扩展类中定义方法。

答案 1 :(得分:1)

是的,这是不可能的。除了@dbraillon的回答

当编译器编译项目时,

partials会变成整个类。所以在dll中没有partial classes的概念。

所以:

public partial class MyPartial {
   public int FieldA;
}

public partial class MyPartial {
   public int FieldB;
}
编译时

成为以下内容:

public class MyPartial {
   public int FieldA;
   public int FieldB;
}