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