在.Net中使用扩展方法的最佳做法是什么?

Vai*_*hav 41 .net

我已经看到这些被用于各种方式,并被指责以错误的方式使用它们(尽管在那种情况下,我用这种方式来证明一点).

那么,您认为采用扩展方法的最佳做法是什么?

开发团队是否应该创建扩展方法库并在各种项目中进行部署?

是否应该以开源项目的形式收集常见的扩展方法?

更新:已决定创建一个组织范围的扩展方法库

Sco*_*man 7

即将发布的框架设计指南第2版将为实现扩展方法提供一些指导,但总的来说:

您应该只定义扩展方法"它们具有语义意义"并提供与每个实现相关的辅助功能.

您还应该避免扩展System.Object,因为并非所有.NET语言都能够将扩展方法作为扩展名调用.(例如,VB.NET需要将其称为静态扩展类上的常规静态方法.)

除非您扩展接口,否则不要在与扩展类型相同的命名空间中定义扩展方法.

不要使用与"真实"方法相同的签名定义扩展方法,因为它永远不会被调用.


Yaa*_*lis 2

我认为这取决于扩展方法的目的。

  • 与项目的特定业务需求相关的扩展方法(无论它们连接到基本数据类型还是自定义对象)不应包含在分布在多个项目中的库中。
  • 与基本数据类型(int、string 等)或具有更广泛应用的泛型相关的扩展方法可以打包并跨项目分发。

请注意不要全局包含几乎没有应用的扩展方法,因为它们只会阻塞智能感知并可能导致混乱和/或误用。