扩展方法编译优先级

Dee*_*Raj 1 .net c#

我的客户提出了一个奇怪的要求,即对于项目代码中的每个.ToString()调用,我们都应该进行自定义操作(比如在db中添加一行)

我觉得扩展方法对我来说非常有用,如果它能为我提供最重要的设施.

Microsoft为什么不允许扩展方法覆盖类方法的现有行为?

我听说编译器将扩​​展方法的优先级设置为低于类方法.有没有办法将编译器修改为优先级扩展方法而不是类方法?

Hab*_*bib 7

有没有办法将编译器修改为优先级扩展方法而不是类方法?

不,你不能.

我会引用Eric Lippert的类似问题:

扩展方法的目的是扩展类型上可用的方法集,而不是覆盖现有方法; 这就是为什么他们被称为"扩展方法"

MSDN - 扩展方法:

您可以使用扩展方法来扩展类或接口,但不能覆盖它们.永远不会调用与接口或类方法具有相同名称和签名的扩展方法.