Рассмотрим два метода расширения:
public static T MyExtension<T>(this T o) where T:class
public static T MyExtension<T>(this T o) where T:struct
И класс:
class MyClass() { ... }
Теперь вызовите метод расширения в экземпляре вышеуказанного класса:
var o = new MyClass(...);
o.MyExtension(); //compiler error here..
o.MyExtension<MyClass>(); //tried this as well - still compiler error..
Компилятор говорит, что вызов метода является неоднозначным, когда я вызываю его в классе. Я бы подумал, что он может определить, какой метод расширения следует вызывать, поскольку MyClass - это класс, а не структура?