我想使用反射来调查对象的私有字段以及获取这些字段中的值,但我很难找到它的语法。
例如,一个对象有6个私有字段,我的假设是我可以用
之类的东西来获取它们的FieldInfomyObject.GetType().GetFields(BindingFlags.NonPublic)
但没有骰子 - 调用返回0的数组。
访问字段的语法是否正确?
答案 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)
};