C# 扩展方法与常规方法-最佳实践理念

C# 扩展方法与常规方法-最佳实践理念,c#,C#,我很难确定何时将方法作为扩展方法实现,何时将方法作为独立方法实现。在确定这一点时,人们遵循的最佳实践是什么?如果满足以下任一条件,请使用扩展方法: 您需要一个类型上的方法,但您不拥有源 您需要一个类型上的方法,您拥有源,并且该类型是一个接口 您需要一个类型上的方法,您确实拥有源,但是添加该方法会创建不需要的耦合* 否则,应该对实际类型本身使用实方法 我认为为您拥有源代码的类或结构创建一个扩展方法没有多大意义——既然常规方法就足够了,为什么还要用扩展方法来迷惑读者呢 建议阅读: *假设您希望向

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

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

  • 您需要一个类型上的方法,但您不拥有源
  • 您需要一个类型上的方法,您拥有源,并且该类型是一个接口
  • 您需要一个类型上的方法,您确实拥有源,但是添加该方法会创建不需要的耦合*
否则,应该对实际类型本身使用实方法

我认为为您拥有源代码的类或结构创建一个扩展方法没有多大意义——既然常规方法就足够了,为什么还要用扩展方法来迷惑读者呢

建议阅读:

*假设您希望向类型添加方便的方法,但不希望创建不应属于API的程序集或类型的依赖项。您可以使用扩展方法来管理它。

从我的角度来看,当我有很多特定类型的实用函数时,我会使用扩展方法

我发现

string.ExtensionMethod();
看起来比

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

我要补充的另一个例子是:你需要一个类型上的方法,你拥有源代码,但该方法会创建一个不需要的耦合。建议的读取链接已失效,我无法找到替代链接。但当你不是编写
ExtensionMethod()
的人时,花些时间在官方的C#docs中查找
扩展方法
,结果发现你找错了地方。