我有类 B 和它的父类 A,它们都在命名空间域中。
- A类,有私有(private)字段a;
- B类,有私有(private)字段b;
然后我在 namespace Reflect 中有一个 Reflection Util。 如果我使用这条线
instanceOfB.GetType().GetFields(BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Instance );
要查找所有字段(a 和 b),我只得到 b。但是当我将 a
设置为 protected 或公开时,我也会找到它们。
我还需要做什么才能找到基类的私有(private)字段?
最佳答案
这是 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.
如果需要获取私有(private)字段,则需要询问基类型。 (使用 Type.BaseType
查找基类型,并对其调用 GetFields
。)
关于c# - 如何通过反射获取类及其父类的私有(private)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911140/