获取ICollection <t> </t>的MethodInfo

时间:2014-09-13 16:59:20

标签: c# linq system.reflection

我有集合ICollection<T>,我需要找到方法“Where”。我怎么能这样做?

我试过这样的事情:

System.Type type = typeof(ICollection<T>);
MethodInfo info = type.GetGenericTypeDefinition().GetMethod("Where");

但它不起作用。我需要它来创建动态表达式

2 个答案:

答案 0 :(得分:3)

它是一种扩展方法,因此它不在接口本身上,而是在Enumerable类上:

typeof(Enumerable).GetMethods("Where", BindingFlags.Static | BindingFlags.Public) 

然后选择您需要的过载。

答案 1 :(得分:0)

你需要

typeof(ICollection<>);

获取ICollection<T>的类型。但Where方法未在ICollection<T>中定义。您应该从静态Enumerable类获取方法。