扩展方法动态绑定

时间:2019-04-17 18:40:01

标签: c# .net extension-methods

在尝试为another SO question写一个优雅的答案时,我偶然发现了有关扩展方法的奇怪问题。

请考虑以下设置:

public class Foo
{
}

public static class Extensions
{
    public static string ExtensionTest(this object o)
    {
        return "object overload called";
    }

    public static string ExtensionTest(this Foo f)
    {
        return "Foo overload called";
    }
}

当我执行以下操作时:

object o = new Foo();
Console.WriteLine(o.ExtensionTest());

它输出object overload called(而不是Foo overload called

  1. 为什么不动态绑定?
  2. 有没有办法对扩展方法(没有混乱的if-elseswitch ing类型)“强加”动态绑定?

0 个答案:

没有答案