获取父对象的静态方法

时间:2011-12-11 05:45:25

标签: c# reflection static-methods

从父对象获取静态方法时遇到问题。检查以下代码:

var objType = typeof(myClass);   // myClass is a ChildClass object
var methods = objType.GetMethods(BindingFlags.Static | BindingFlags.FlattenHierarchy);

父类:

public class ParentClass {
    public static T GrabStuff<T>(string values) {
        GrabStuff<T>(values, false);
    }

    // ---- Updated
    public static T GrabStuff<T>(string values, bool isSomething) {
        // TODO: Do Stuff
    }
    // ---- Updated
}

儿童班:

public class ChildClass : ParentClass {
}

方法返回0个对象的数组。

我在这里做错了什么来提取静态方法列表?

2 个答案:

答案 0 :(得分:4)

您没有指定BindingFlags.Public

var objType = typeof(ChildClass);
var methods = objType.GetMethods(BindingFlags.Static | 
                                 BindingFlags.FlattenHierarchy | 
                                 BindingFlags.Public);

通过此更改,MethodInfo的{​​{1}},GrabStuffEquals将被返回。

答案 1 :(得分:1)

除了BindingFlags.Public

之外,您还必须指定BindingFlags.Static
var objType = typeof(ChildClass);
var methods = objType.GetMethods(BindingFlags.Public | BindingFlags.Static);