Obtener información de método para Enumerable.DefaultIfEmpty
-
28-10-2019 - |
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)) });
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