扩展方法 vs 常规方法 - 最佳实践建议

27

我有些难以确定何时将方法实现为扩展方法,何时将方法实现为独立方法。人们在确定这一点时遵循的一些最佳实践是什么?

2个回答

29
如果出现以下任一情况,应使用扩展方法:
  • 需要在类型上定义一个方法,但您不拥有该类型的源代码。
  • 需要在类型上定义一个方法,您拥有源代码,且该类型是接口。
  • 需要在类型上定义一个方法,您拥有源代码,但添加该方法会创建不必要的耦合。
否则,应使用实际类型本身的真正方法。
我认为对于您拥有源代码的类或结构体来说,创建扩展方法没什么意义 - 为什么要使用扩展方法来混淆读者,而普通的方法就足够了呢?
建议阅读:框架设计准则:扩展方法 * 假设您想向一个类型添加方便的方法,但又不想创建与不应成为API一部分的程序集或类型的依赖关系。您可以使用扩展方法来管理此过程。

8
我要添加的另一个情况是:你需要在类型上拥有一个方法,你拥有源代码,但该方法否则会创建不希望的耦合。 - JaredPar
建议的阅读链接已失效,我无法找到替代品。 - Timo

3

3
但是如果你不是编写 "ExtensionMethod()" 的人,并花费一些时间在官方的C#文档中查找 "ExtensionMethod",只能发现自己正在错误的地方寻找。 - Adam Parkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接