2012-10-15 32 views
1

我想知道为什么不能为'type instance'创建扩展方法。如果已经提供了这个功能,那么例如可以“扩展”静态类。为什么不可能为'type instance'创建扩展

例子:

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

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

您究竟会如何使用这种扩展方法?如果你正在指定班级名称,那么你可以用“新班级”来做到这一点...... –

+1

因为没有必要。 – SLaks

+0

向方法调用添加复杂功能,而不是通过执行类型查找来确认类型具有它必须查询实例的方法签名。现在如果将它转换成其他东西会发生什么?该方法是否结转?如果之前不存在命名空间冲突会怎么样?等等。 – TheZ

回答

1

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

然而,只要想一想。你真的会从这个功能获得什么?你已经可以完全合法地做到这一点,这实际上是“扩展”静态类。

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

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

如果你认为通过扩展类A你会以某种方式获得其所有internalprivate成员访问,那么你将不能够做到这一点,它会破坏封装。你也不能用实例扩展方法做到这一点。