部分类与扩展方法

Val*_*roM 40 c# extension-methods partial-classes

我没有太多使用这两种方法来扩展类或创建针对类的扩展方法的经验.通过寻找其他人的工作,我在这里有一个问题.

我看到人们使用parital类来扩展项目中的实体类.同时,在同一个项目中,还有另一个包含很多实体类扩展方法的文件夹.

这样做是对的吗?我的意思是这两种方式都运作良好.当我想要扩展课程时,你能给我一些真正的练习吗?

Jai*_*han 37

确定您是要使用部分类还是扩展方法的一些差异是

部分类

  • 仅适用于同一项目/程序集中的类
  • 目标类必须标记为部分
  • 可以访问Target类的字段和受保护的成员
  • Target必须是类实现

扩展方法

  • 可以应用于其他组件中的类
  • 必须是静态的,只能访问Target类的公共成员
  • 扩展目标可以是具体类型,也可以是抽象类型或接口


Ode*_*ded 24

部分类应该用在代码生成场景中.

由于生成的文件可能随时被覆盖,因此使用部分类写入未生成的文件.

此外,partials只有在它们是同一个程序集的一部分时才有效 - 它们不能跨越程序集边界.

如果这些不是你的约束,你可以而且应该使用扩展方法 - 当然,在考虑其他可能性之后,例如继承和组合的适用性.