Ich versuche, eine generische Methode zu schreiben, die Parameter und ruft eine Funktion, wie diese liefert:C# Methodengruppe Typinferenz
class MyClass {
public int Method(float arg) => 0;
}
TResult Call<T1, TResult>(Func<T1, TResult> func) =>
func(default(T1));
void Main()
{
var m = new MyClass();
var r1 = Call<float, int>(m.Method);
var r2 = Call(m.Method); // CS0411
}
Die letzte Zeile nicht kompilieren mit CS0411. Gibt es eine Problemumgehung, um Typrückschluss zu erhalten, um hier zu arbeiten?
Anwendungsfall: Verwenden von AutoFixture zum Generieren von Funktionsaufrufparametern.
Ich glaube nicht, dass das möglich ist. – mrahhal
Related (?): Http://Stackoverflow.com/a/9331879/3225495 –
Es ist nicht verwandt, in seinem Fall sind die beiden Typen unabhängig und beide durch die Methode Handle gegeben. C# könnte theoretisch die korrekten generischen Argumente vollständig ableiten. Der Standard erfordert dies aus Gründen der Komplexität nicht. – Blindy