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)) });
È stato utile?

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