如何通过反射获取类及其父类的私有字段?
我有类 B 及其父类 A,两者都在命名空间 Domain 中。
- A类,有私有字段a;
- B类,有私有字段b;
然后我在命名空间 Reflect 中有一个 Reflection Util。 如果我使用这一行
instanceOfB.GetType().GetFields(BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Instance );
来查找所有字段(a 和 b),我只得到 b。但是当我将 a
设为受保护或公开时,我也会找到它们。
我还需要做什么才能找到基类的私有字段?
I have the class B and its parent class A, both in namespace Domain.
- Class A, has the private field a;
- Class B, has the private field b;
Then I have a Reflection Util in namespace Reflect.
If I use this line
instanceOfB.GetType().GetFields(BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Instance );
to to find all fields (a & b), I get only b. But when I make a
protected or public I find them too.
What do I need to do to find the private fields of the base class too?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是记录的行为:
如果您需要获取私有字段,则需要询问基本类型。 (使用
Type.BaseType
查找基本类型,然后调用GetFields
。)This is the documented behaviour:
If you need to get private fields, you'll need to ask the base type. (Use
Type.BaseType
to find the base type, and callGetFields
on that.)