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

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

What are the best practices for using Extension Methods in .Net?

我已经看到它们以各种方式被使用,并且被指控以错误的方式使用它们(尽管在这种情况下,我是以那种方式使用它们来证明一个观点)。

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

开发团队应该创建扩展方法库并将其部署到各个项目中吗?

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

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


n


您可能想看看http://www.codeplex.com/nxl和http://www.codeplex.com/umbrella,它们都是扩展方法库。我个人还没有看过源代码,但是我敢肯定那里的人能够为您提供一些很好的指针。


自1990年代初以来,Objective-C语言就拥有"类别";这些本质上与.NET扩展方法相同。在寻找最佳做法时,您可能想看看什么经验法则Objective-C(可可


我一直将扩展方法包含在Utils类的Core库中,因为使用我的框架的人可能会发现有用的方法,但是对于最终部署人员可以选择扩展的大规模部署而言方法库,我建议您将所有扩展名放入它们自己的名称空间,甚至是他们自己的项目文件中,以便人们可以选择添加引用或using语句,或仅在需要时添加,例如:

1
Core.Extensions.Base64Encode(str);

我的Utils课是我在全世界最好的朋友,那是在推广方法问世之前,它们只有助于加强我们的关系。我要遵循的最大原则是让人们在可能的情况下选择使用哪种扩展框架。


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

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

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


n


推荐阅读