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

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

这就是为了达到以下目的:

  • 创建一个ITopology界面

  • 为此接口创建一个扩展方法(例如public static int CountNodes(this ITopology topologyIf))

  • 那么当创建一个实现ITopology的类(例如MyGraph)时,它会自动拥有Count Nodes扩展。

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


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

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

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

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

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

    链接地址: http://www.djcxy.com/p/17447.html

    上一篇: Can extension methods be applied to interfaces?

    下一篇: Does C# have extension properties?