是否可以将扩展方法应用于接口(interface)? (C#问题)
例如实现如下:
创建 ITopology 接口(interface)
为此接口(interface)创建扩展方法(例如 public static int CountNodes(this ITopology topologyIf) )
然后在创建实现 ITopology 的类(例如 MyGraph)时,它会自动具有 Count Nodes 扩展。
这样一来,实现接口(interface)的类就不必设置类名来与扩展方法中定义的内容保持一致。
最佳答案
当然可以; Linq 的大部分内容都是围绕接口(interface)扩展方法构建的。
接口(interface)实际上是扩展方法发展的驱动力之一;由于它们无法实现自己的任何功能,因此扩展方法是将实际代码与接口(interface)定义相关联的最简单方法。
参见 Enumerable围绕 IEnumerable<T>
构建的一整套扩展方法的类.要实现一个,它与为一个类实现一个相同:
public static class TopologyExtensions
{
public static void CountNodes(this ITopology topology)
{
// ...
}
}
就接口(interface)而言,扩展方法没有什么特别的不同;扩展方法只是一个静态方法,编译器对其应用一些语法糖,使其看起来像是目标类型的一部分。
关于c# - 扩展方法可以应用于接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770333/