1

我想知道为什么不能为“类型实例”创建扩展方法。例如,如果提供了此功能,则可以“扩展”静态类。

例子:

public static class A
{
  public static void Method()
  {
  }
}

public static class AExtensions
{
  public static void Method2(this static A a)
  {
      // something
  }
}
4

1 回答 1

1

当然,真正的答案是:开发这样一个功能的成本远远超过了潜在的好处。

但是,请考虑一下。您实际上将从该功能中获得什么?您已经可以合法地完美地做到这一点,这实际上是在“扩展”静态类。

// 3rd party library
public static class A {
  public static void Method() {
  }
}

// my source code
public static class AExtensions {
  public static void Method2() {
  }
}

如果你认为通过扩展类A你会以某种方式访问​​它的所有internal成员private,那么你将无法做到这一点,它会破坏封装。您也不能使用实例扩展方法来做到这一点。

于 2012-10-15T18:50:55.670 回答