Рассмотрим следующую программу:
class A
{
public static void Foo()
{
}
}
static class Ext
{
public static void Foo(this A a)
{
}
}
class Program
{
static void Main(string[] args)
{
var a = new A();
a.Foo();
}
}
Это не скомпилируется с ошибкой:
Пользователь "Test.A.Foo()" не может быть доступен с ссылкой на экземпляр; квалифицируйте его вместо имени типа
Почему компилятор игнорирует метод расширения?