2009-07-30 46 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) 
}; 
相关问题