Mehrdeutiger Aufruf zwischen zwei generischen C # -Erweiterungsmethoden, wobei T: class und T: struct

Berücksichtigen Sie zwei Erweiterungsmethoden:

public static T MyExtension<T>(this T o) where T:class
public static T MyExtension<T>(this T o) where T:struct

Und eine Klasse:

class MyClass() { ... }

ufen Sie jetzt die Erweiterungsmethode für eine Instanz der obigen Klasse auf:

var o = new MyClass(...);
o.MyExtension(); //compiler error here..
o.MyExtension<MyClass>(); //tried this as well - still compiler error..

Der Compiler sagt, dass das Aufrufen der Methode ein mehrdeutiger Aufruf ist, wenn ich ihn für eine Klasse aufrufe. Ich hätte gedacht, dass es bestimmen könnte, welche Erweiterungsmethode aufgerufen werden soll, da MyClass eine Klasse und keine Struktur ist?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage