作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试构建一个调用 LINQ 的 Any() 方法的表达式,但我似乎无法找到传递给 Type.GetMethod() 的正确参数。
从文档来看,Any() 似乎是作为 Enumerable 类的成员实现的,这似乎可行,因为这显示了名为“Any”的方法:
var enumerableType = typeof (Enumerable);
var foo = enumerableType.GetMethods().Where(m => m.Name == "Any").ToList();
当我访问名为“Any”的方法时,我得到一个 AmbiguousMatchException。
Any() 方法有两种,在Enumerable 中,一种接受一个IEnumerable 参数,另一种接受一个IEnumerable 和一个Func。我想要第二种,理论上,我需要做的就是传递一个包含两种类型的数组:
var bar = enumerableType.GetMethod("Any", new[] { typeof(IEnumerable<>), typeof(Func<,>) });
但这总是返回 null。
我做错了什么?
最佳答案
var foo = enumerableType.GetMethods(BindingFlags.Static | BindingFlags.Public)
.First(m => m.Name == "Any" && m.GetParameters().Count() == 2);
关于c# - 获取 LINQ 的 Any() 方法的 MethodInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25147231/
我是一名优秀的程序员,十分优秀!