获取Enumerable.DefaultIfEmpty的methodinfo

我正在构建一些Linq Expression并试图获取IEnumerable.DefaultIfEmpty ( http://msdn.microsoft.com/en-us/library/bb360179.aspx )的MethodInfo。 什么似乎是一件容易的事,但我对它为什么不起作用毫无头绪。

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

说实话,获取通用方法很痛苦。 我不知道比使用更好的方法:

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

要调用GetMethod ,您必须具有完全正确的参数类型,包括参数的正确generics类型参数。 一旦你能够做到这一点,但是在那之前我认为以上就是可用的:(