Ottieni methodinfo per Enumerable.DefaultIfEmpty
-
28-10-2019 - |
Domanda
Sto creando un po 'di espressione Linq e sto cercando di ottenere MethodInfo per IEnumerable.DefaultIfEmpty
( http://msdn.microsoft.com/en-us/library/bb360179.aspx ).Quello che sembrava essere un compito facile, ma non so perché non funziona.
typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>) });
typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
Soluzione
Ottenere metodi generici è una seccatura, ad essere onesti.Non conosco un modo migliore che usare:
var method = typeof(Enumerable).GetMethods()
.Where(m => m.Name == "DefaultIfEmpty")
.Where(m => m.GetParameters().Length == 1)
.Single();
Per chiamare GetMethod
, è necessario disporre del tipo di parametro esatto e corretto, incluso il parametro di tipo generico corretto per il parametro.Una volta ottenuto una volta potresti farlo, ma fino ad allora penso che quanto sopra sia tutto ciò che è disponibile :(
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow