Приоритет методов расширения C #

Я немного запутался о том, как работают методы расширения.

Если я правильно читаю http://msdn.microsoft.com/en-us/library/bb383977.aspx и этот Если метод расширения имеет ту же подпись, что и метода в запечатанном классе, каков приоритет вызова? .

Затем следует написать «Экземпляр», но вместо этого будет написано «Метод расширения».

interface IFoo
{
}

class Foo : IFoo
{
    public void Say()
    {
        Console.WriteLine("Instance");
    }
}

static class FooExts
{
    public static void Say(this IFoo foo)
    {
        Console.WriteLine("Extension method");
    }
}

class Program
{
    static void Main(string[] args)
    {
        IFoo foo = new Foo();
        foo.Say();
    }
}

Благодарим за любую помощь в прояснении поведения.

12
задан Community 23 May 2017 в 12:33
поделиться