获取Enumerable.DefaultIfEmpty的方法信息

本文关键字:方法 信息 DefaultIfEmpty Enumerable 获取 | 更新日期: 2023-09-27 17:59:18

我正在构建一些Linq表达式,并试图获得IEnumerable.DefaultIfEmpty的MethodInfo(http://msdn.microsoft.com/en-us/library/bb360179.aspx)。这似乎是一项简单的任务,但我不知道为什么它不起作用。

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

获取Enumerable.DefaultIfEmpty的方法信息

老实说,获得泛型方法是一件痛苦的事。我不知道有什么比使用更好的方法了

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

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