2011-12-11 84 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);