Pregunta

Estoy creando una expresión de Linq y tratando de obtener MethodInfo para IEnumerable.DefaultIfEmpty ( http://msdn.microsoft.com/en-us/library/bb360179.aspx ).Lo que parecía ser una tarea fácil, pero no tengo ni idea de por qué no funciona.

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

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

Solución

Para ser honesto, obtener métodos genéricos es un fastidio.No conozco una mejor manera que usar:

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

Para llamar a GetMethod, tendría que tener el tipo de parámetro exacto correcto, incluido el parámetro de tipo genérico correcto para el parámetro.Una vez que tengas eso una vez , podrías hacerlo, pero hasta entonces creo que lo anterior es todo lo que está disponible :(

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top