扩展方法可以应用于接口吗?

是否可以将扩展方法应用于接口? (C#问题)

这是例如达到以下目的:

  1. 创build一个ITopology界面

  2. 为这个接口创build一个扩展方法(例如public static int CountNodes(this ITopology topologyIf))

  3. 那么当创build实现ITopology的类(例如MyGraph)时,它将自动具有Count Nodes扩展。

这样,实现接口的类将不必具有设置的类名称以与扩展方法中定义的内容相对应。

他们当然可以; Linq的大部分是围绕接口扩展方法构build的。

接口实际上是扩展方法发展的驱动力之一; 由于它们不能实现任何自己的function,所以扩展方法是将实际代码与接口定义关联的最简单的方法。

请参阅Enumerable类,以获取围绕IEnumerable<T>构build的整个扩展方法集合。 要实现一个,就像实现一个类一样:

 public static class TopologyExtensions { public static void CountNodes(this ITopology topology) { // ... } } 

就接口而言,扩展方法没有什么特别的不同; 一个扩展方法只是一个静态的方法,编译器应用一些语法糖来使它看起来像方法是目标types的一部分。