Can extension methods be applied to interfaces?
是否可以对接口应用扩展方法?(C问题)
例如,实现以下目标:
创建ITology接口
为此接口创建扩展方法(例如public static int countnodes(this itopology topologyyif))。
然后,当创建实现ITology的类(例如mygraph)时,它将自动具有count nodes扩展名。
这样,实现接口的类就不必具有与扩展方法中定义的内容一致的集合类名。
当然可以;大多数LINQ是围绕接口扩展方法构建的。
接口实际上是开发扩展方法的驱动力之一;因为它们不能实现自己的任何功能,所以扩展方法是将实际代码与接口定义关联起来的最简单方法。
有关围绕
1 2 3 4 5 6 7 | public static class TopologyExtensions { public static void CountNodes(this ITopology topology) { // ... } } |
就接口而言,扩展方法没有什么特别不同的地方;扩展方法只是一个静态方法,编译器应用一些句法糖分使其看起来像是目标类型的一部分。