c# – 如何通过反射获取类及其父类的私有字段?

前端之家收集整理的这篇文章主要介绍了c# – 如何通过反射获取类及其父类的私有字段?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有B类及其父类A,都在命名空间Domain中.

A类,有私人领域a;
B类,有私人字段b;

然后我在命名空间反射中有一个反射Util.
如果我使用这一行

instanceOfB.GetType().GetFields(BindingFlags.NonPublic 
         | BindingFlags.Public | BindingFlags.Instance );

找到所有字段(a& b),我只得到b.但是当我做一个受保护或公开的时候,我也找到了.

我还需要做什么来找到基类的私有领域?

解决方法

这是 documented behaviour

Specify BindingFlags.NonPublic to include non-public fields (that is,private,internal,and protected fields) in the search. Only protected and internal fields on base classes are returned; private fields on base classes are not returned.

如果您需要获取私人领域,您需要询问基本类型. (使用Type.BaseType查找基本类型,并调用GetFields.)

猜你在找的C#相关文章