【发布时间】:2013-06-09 13:57:49
【问题描述】:
我有这样的课:
public class SomeClass
{
public static IEnumerable<SomeClass> GetOutput(IEnumerable<SomeClass> items)
{
//Do stuff
}
}
这个类不是静态的,但我想让GetOutput 成为IEnumerable<SomeClass> 的扩展方法。因此,我创建了一个新的静态类:
public static class SomeClassExtensionMethods
{
public static IEnumerable<SomeClass> GetOutput(this IEnumerable<SomeClass> items)
{
return SomeClass.GetOutput(items);
}
}
有没有更优雅的方法来做到这一点?为什么不允许我们将SomeClass.GetOutput 设为扩展方法?
【问题讨论】:
-
因为那将是一个实例方法。
-
他们本可以实现这一点,但他们决定不这样做。请参阅此处了解先前的讨论:stackoverflow.com/questions/2731695/… 和此处:stackoverflow.com/questions/7405751/…
-
@newStackExchangeInstance 他仍在扩展接口,
IEnumerable<SomeClass>。您不能为接口内的实例方法提供在该接口内编写的实现。此外,IEnumerable<>是在 BCL 中定义的,因此我们无法为其配备更多的实例方法。只有扩展方法。
标签: c# extension-methods