Question

Je construis une expression de Linq et j'essaie de me procurer Methodinfo pour IEnumerable.DefaultIfEmpty (http://msdn.microsoft.com/en-us/library/bb360179.aspx). Ce qui semblait être une tâche facile, mais je ne sais pas pourquoi cela ne fonctionne pas.

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>) });

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
Était-ce utile?

La solution

Obtenir des méthodes génériques est une douleur, pour être honnête. Je ne connais pas une meilleure façon que d'utiliser:

var method = typeof(Enumerable).GetMethods()
                               .Where(m => m.Name == "DefaultIfEmpty")
                               .Where(m => m.GetParameters().Length == 1)
                               .Single();

Appeler GetMethod, vous devrez avoir le type de paramètre correct exact, y compris le paramètre de type générique droit pour le paramètre. Une fois que tu as ça une fois que Vous pouvez le faire, mais jusque-là, je pense que ce qui précède est tout ce qui est disponible :(

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top