2010-02-20 28 views

回答

13

事实上,实际方法优先于扩展方法。只是要说清楚 - “执行顺序”表明两者都可能被称为; 只有原始方法将被调用。也许选择另一个名字/签名;如果这是您的意图,则不能使用扩展方法进行猴子修补。

如果有一些基类/接口(类型实现)没有有这种方法,你也许可以把它转换到那里......?

+1

哈哈!猴子补丁...这是一个新的。好的,谢谢,我在想,如果我是正确的,它会被破坏密封,并会打败使用密封的整个点。 – 2010-02-23 18:41:57

+1

@Scott - 也被称为鸭子打孔。我没有骗你。 – 2010-02-23 19:24:18

5

使用另一个方法签名。扩展方法意味着您要使用新功能扩展密封类,而不是覆盖已经实现的类。

扩展方法在类型上具有实例成员的“隐藏名称”语义。这意味着即使扩展方法更合适,任何可访问的类型实例成员也会始终使用相同名称映射任何扩展方法。因此,如果将实例成员添加到与扩展方法相同名称的类型中,则可以使该扩展方法不可渲染。

有关详细信息,看看这个帖子: Extension Methods Best Practices (Extension Methods Part 6)

相关问题