如何在C#中获取私有成员值

时间:2010-01-18 16:46:33

标签: c# reflection private-members

我想获得私人会员的价值,所以我写了以下内容:

var f = e.
          GetType().
          GetFields(System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance | 
                    System.Reflection.BindingFlags.DeclaredOnly)[0];
object o = f.FieldType.GetProperty("RowIndex").GetValue(f.FieldType, null);

但是方法“GetValue”需要第一个参数中的原始对象,而我没有这个对象,因为我进入运行时。 任何人都可以帮助我吗?!

2 个答案:

答案 0 :(得分:11)

我认为在你的例子中原始对象是e不是吗?

善,

答案 1 :(得分:0)

如果你真的把这个反射的调用分成它的组件,你可能会有更好的运气。在我看来,原始对象实际上将是由

生成的PropertyInfo
f.FieldType.GetProperty("RowIndex")

我会说如果你实际上声明一个PropertyInfo对象暂时保存它,你就可以将它传递给GetValue调用,然后在你完成时将其销毁。