c# - 扩展方法可以应用于接口(interface)吗?

标签 c# .net interface extension-methods

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

例如实现如下:

  1. 创建 ITopology 接口(interface)

  2. 为此接口(interface)创建扩展方法(例如 public static int CountNodes(this ITopology topologyIf) )

  3. 然后在创建实现 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/

相关文章:

c# - 如何获取与关键字匹配的数组的索引值?

c# - 我是否必须在 MonoTouch 的 UITableViewSource 中保留对 GetCell() 和 GetViewForHeader() 的返回值的显式引用?

c# - 将字符串转换为带小数点分隔符后 2 位的 double

java - Lambda 重载方法

interface - FxCop + MVP : "Properties should not be write only"

c# - 订购我的 LINQ

c# - 错误 : GenerateWinPRTManifest

c# - C# 中新的 Int32() 用法?

java - 为什么这些类之一没有继承我创建的接口(interface)?

c# - 从 CngKey 或 X509Certificate(2) 实例生成 CSR