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)) });

War es hilfreich?

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
scroll top