我有课程方法。例如
public class Foo
{
public int Method1()
{
return 1;
}
public int Method2()
{
return 2;
}
public int Method3(int i)
{
return i;
}
}
现在我将拥有一个函数,它将从上面的类中找到返回int并且没有任何参数的所有方法。
我想,我可以使用反思:
Type type = o.GetType();
MethodInfo[] m = type.GetMethods();
但它给了我所有的方法。那么我怎样才能获得符合标准的方法呢?
答案 0 :(得分:5)
var matches = m.Where(mi => mi.ReturnType == typeof(int) && mi.GetParameters().Length == 0);
请注意,这将返回所有子类型中的所有匹配方法。如果您只想要类型中声明的方法,则可以使用GetMethods
的重载:
var matches = o.GetType()
.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
.Where(mi => mi.ReturnType == typeof(int) && mi.GetParameters().Length == 0);