我在类名称空间Domain中有B类及其父类A.
然后我在名称空间Reflect中有一个Reflection Util。 如果我使用这一行
instanceOfB.GetType().GetFields(BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Instance );
要找到所有字段(a& b),我只得到b。但当我a
保护或公开时,我也会发现它们。
我还需要做些什么才能找到基类的私有字段?
答案 0 :(得分:13)
指定BindingFlags.NonPublic以在搜索中包含非公共字段(即私有,内部和受保护字段)。仅返回基类上的受保护和内部字段;不返回基类上的私有字段。
如果您需要获取私有字段,则需要询问基本类型。 (使用Type.BaseType
查找基本类型,然后在其上调用GetFields
。)
答案 1 :(得分:1)
instanceOfB.GetType().BaseType.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance );
答案 2 :(得分:-4)
public class A
{
private int aa;
}
public class B
{
private int bb;
}
System.Reflection.FieldInfo[] fields = (new B()).GetType().GetFields(BindingFlags.NonPublic| BindingFlags.Public | BindingFlags.Instance);