【发布时间】:2009-07-08 10:26:02
【问题描述】:
对于使用除了提高可读性之外没有其他目的的扩展方法的一般想法是什么?
如果不使用扩展方法,我们可能有方法
IEnumerable<DependencyObject> GetDescendents(DependencyObject root) {}
可以调用
var descendents = GetDescendents(someControl);
或
foreach (var descendent in GetDescendents(someControl)) {}
虽然这没有什么问题,但我发现 instance.method() 表示法更具可读性,因此我可能会考虑使用此签名将其作为扩展方法
public IEnumerable<DependencyObject> GetDescendents(this DependencyObject root) {}
允许它被调用
var descendents = someControl.GetDescendents();
或
foreach (var descendent in someControl.GetDescendents()) {}
所以我的问题是你认为这是合理的还是滥用扩展方法。如果只是以不同的方式声明功能,我会毫不犹豫;但是使用扩展方法需要将其编码在不同的静态类中,这一事实让我想知道是否值得付出努力。我在上面使用的示例是一个相当通用的示例,并且可能具有将在多个地方使用的扩展方法的优点,但通常情况并非如此,我将在同一文件中编码包含扩展的静态类使用它的单个类。
【问题讨论】:
标签: c# coding-style extension-methods