2009-07-30 63 views
2

我想使用反射來調查對象的私有字段以及獲取這些字段中的值,但我很難找到它的語法。如何獲取對象的所有私有字段中的實例?

例如,一個對象有6個私人領域,我的假設是,我可以取東西的字段信息像

myObject.GetType().GetFields(BindingFlags.NonPublic) 

但沒有骰子 - 呼叫返回0

請告訴我一個數組訪問字段的正確語法?

回答

6
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static 
+1

啊,它的實例,我失蹤 – 2009-07-30 20:01:42

+0

剛剛添加的靜態位,以防您需要的太:) :) – leppie 2009-07-31 08:22:11

1

您還應該添加BindingFlags.Instance

myObject.GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance) 
4

你覆蓋默認的標誌,所以你需要添加Instance回...

myObject.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance) 
1

由於你想要檢索兩個字段和值:

from field in myObject.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance) 
select new 
{ 
    Field = field, 
    Value = field.GetValue(myObject) 
}; 
相關問題