Gre*_*reg 115 .net c# extension-methods interface
是否可以将扩展方法应用于接口?(C#问题)
例如,这是为了实现以下目标:
创建ITopology界面
为此接口创建扩展方法(例如public static int CountNodes(this ITopology topologyIf))
然后在创建实现ITopology的类(例如MyGraph)时,它会自动拥有Count Nodes扩展.
这样,实现接口的类就不必具有与扩展方法中定义的类对齐的set类名.
Aar*_*ght 178
他们当然可以; Linq的大多数都是围绕接口扩展方法构建的.
接口实际上是扩展方法发展的驱动力之一; 由于它们无法实现任何自己的功能,因此扩展方法是将实际代码与接口定义相关联的最简单方法.
有关构建的整个扩展方法集合,请参阅Enumerable类IEnumerable<T>.要实现一个,它与为类实现一个相同:
public static class TopologyExtensions
{
public static void CountNodes(this ITopology topology)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
就接口而言,扩展方法没有什么特别的不同; 扩展方法只是一个静态方法,编译器应用一些语法糖来使它看起来像方法是目标类型的一部分.