扩展方法与常规方法 - 最佳实践思路

时间:2011-01-18 17:55:33

标签: c#

我在确定何时将方法实现为扩展方法以及何时将方法实现为独立方法时遇到了一些困难。人们在确定这一点时会遵循哪些最佳做法?

2 个答案:

答案 0 :(得分:23)

如果满足以下任一条件,请使用扩展方法:

  • 您需要某种类型的方法,而您不拥有该来源。
  • 你需要一个类型的方法,你拥有源,类型是一个接口。
  • 你需要一个类型的方法,你拥有源,但添加方法会产生不希望的耦合。*

否则,您应该对实际类型本身使用实际方法。

我认为为您拥有源代码的类或结构创建扩展方法没有多大意义 - 为什么在常规方法足够时将读者与扩展方法混淆?

建议阅读: Framework Design Guidelines: Extension Methods

* 想象一下,您希望为类型添加便捷方法,但又不希望为不应该属于API的程序集或类型创建依赖项。您可以使用扩展方法来管理它。

答案 1 :(得分:2)

Try this Stackoverflow post for a discussion about extension method best practices.

从我的角度来看,当我为特定类型提供大量实用函数时,我会使用扩展方法。

我发现......

string.ExtensionMethod();

看起来比......更清洁。

StringHelper.ExtensionMethod("string to do something with");