如何找到返回任何类型的函数

时间:2014-04-02 19:16:01

标签: c#

我有课程方法。例如

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();

但它给了我所有的方法。那么我怎样才能获得符合标准的方法呢?

1 个答案:

答案 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);