Pergunta

Estou construindo algumas expressões Linq e tentando obter o MethodInfo para IEnumerable.DefaultIfEmpty (http://msdn.microsoft.com/en-us/library/bb360179.aspx).O que parecia ser uma tarefa fácil, mas não sei por que não está funcionando.

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

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
Foi útil?

Solução

Obter métodos genéricos é uma dor, para ser honesto.Não conheço maneira melhor do que usar:

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

Chamar GetMethod, você precisaria ter o tipo de parâmetro exato e correto, incluindo o parâmetro de tipo genérico correto para o parâmetro.Depois de conseguir isso uma vez você poderia fazer isso, mas até então acho que o acima é tudo o que está disponível :(

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top