2011-12-11 85 views
3

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

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的对象阵列。

我在这里做错了什么拉动静态方法的列表?

回答

4

没有指定BindingFlags.Public

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

随着这一变化被返回MethodInfo的为GrabStuffEqualsReferenceEquals

+0

是的,这个工作。但是,我将如何拉一个重载的方法?这工作,当我添加BindingFlags.Public。然而,上面的例子并没有显示它,但GrabStuff被重载,我得到了“发现不明确的匹配”。当我使用GetMethod函数。有任何想法吗? – Sean

+0

你能用一些代码来更新你的问题吗? – BrokenGlass

+0

代码已被编辑和更新。 – Sean

1

你必须除了指定BindingFlags.PublicBindingFlags.Static

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