如何在对象的所有私有字段中获取实例?

时间:2009-07-30 19:57:24

标签: c# .net reflection

我想使用反射来调查对象的私有字段以及获取这些字段中的值,但我很难找到它的语法。

例如,一个对象有6个私有字段,我的假设是我可以用

之类的东西来获取它们的FieldInfo
myObject.GetType().GetFields(BindingFlags.NonPublic)

但没有骰子 - 调用返回0的数组。

访问字段的语法是否正确?

4 个答案:

答案 0 :(得分:6)

BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static

答案 1 :(得分:4)

您已覆盖默认标记,因此需要重新添加Instance ...

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

答案 2 :(得分:1)

您还应添加 BindingFlags.Instance

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

答案 3 :(得分:1)

由于您要检索字段和值:

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