Вот пример код, показывающий странность: (код фиксированные на основе комментариев)Почему это требуется для методов расширения суперклассов?
public class C{}
public static class E {
public static void Foo(this C o) { }
}
class D:C {
void test() {
// Foo(); // will not compile
this.Foo(); // compile ok
}
}
естественно в классе реального сценария C будет классом я не имею доступа к его исходному коду
Кто-нибудь знает, почему это странное требование использовать это ключевое слово?
Я предполагаю, что вы намеревались «D» наследовать от 'C'. В вашем примере кода это не так. –
и что foo() и this.foo() должны быть Foo() и this.Foo(); –
Ни один из ваших фрагментов не будет компилироваться, поэтому либо исправить фрагменты, либо исправить комментарии. –