Holen Sie sich methodinfo für Enumerable.DefaultIfEmpty
-
28-10-2019 - |
Frage
Ich erstelle einen Linq-Ausdruck und versuche, MethodInfo für IEnumerable.DefaultIfEmpty
( http://msdn.microsoft.com/en-us/library/bb360179.aspx ).Was eine leichte Aufgabe zu sein schien, aber ich weiß nicht, warum es nicht funktioniert.
typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>) });
typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
Lösung
Generische Methoden zu bekommen ist ein Schmerz, um ehrlich zu sein.Ich kenne keinen besseren Weg als:
var method = typeof(Enumerable).GetMethods()
.Where(m => m.Name == "DefaultIfEmpty")
.Where(m => m.GetParameters().Length == 1)
.Single();
Um GetMethod
aufzurufen, müssen Sie den genau richtigen Parametertyp haben, einschließlich des richtigen generischen Typparameters für den Parameter.Sobald Sie das einmal haben, können Sie es tun, aber bis dahin denke ich, ist das Obige alles, was verfügbar ist :(
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow