Ich habe keinen Zweifel, dies ist so einfach wie möglich zu tun, aber ich habe eine Funktion Schöpfer Bibliothek, die Lambda-Funktionen für mich die Form erzeugt:C# Konvertieren Func <T1, object> zu Func <T1, T2>
Func<T1, object>
Und ich m sucht, um die out-Parameter genauer zu spezifizieren - Grundsätzlich suche ich nach der Lage sein, etwas entlang der Linien von zu erstellen:
private Func<T1, T2> GetFunc<T1, T2>(string expression)
{
Func<T1, object> objFunc = CreateFunction(expression));
return objFunc as Func<T1, T2>;
}
Aber, wenn ich das versuche, erhalte ich ein null
zurück (als beiseite , wenn ich objFunc
als 0 zurückgebees ist kein Null, so weiß ich, dass das nicht mein Problem ist).
Wie mache ich das richtig?
Randbemerkung: Wenn Sie werfen wollen, dann werfen (d '(Func) objFunc'). Verwenden Sie 'as' nicht, es sei denn, Sie haben einen guten Grund dafür. Auf diese Weise wird Ihre Anweisung schnell mit einer 'InvalidCastException' fehlschlagen und Sie müssen' NullReferenceException' nicht verfolgen und prüfen, ob der Wert vorher Null war, um zu wissen, ob die Umwandlung fehlgeschlagen ist oder nicht. –
Heinzi
Wenn Sie dies richtig tun, müssen Sie nicht die Bibliothek zur Erstellung von Funktionen verwenden, die solche unzuverlässigen Dinge ausführt. Das Problem liegt in dieser Bibliothek. – Martijn