我在类名称空间Domain中有B类及其父类A.
然后我在名称空间Reflect中有一个Reflection Util。
如果我使用这一行
instanceOfB.GetType().GetFields(BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Instance );
要找到所有字段(a和b),我只得到b。但是当我做的时候 a 保护或公开我也发现它们。
我还需要做些什么才能找到基类的私有字段?
这是 记录的行为:
指定BindingFlags.NonPublic以在搜索中包含非公共字段(即私有,内部和受保护字段)。仅返回基类上的受保护和内部字段;不返回基类上的私有字段。
如果您需要获取私有字段,则需要询问基本类型。 (使用 Type.BaseType 找到基类型,然后调用 GetFields 在那。)
这是 记录的行为:
指定BindingFlags.NonPublic以在搜索中包含非公共字段(即私有,内部和受保护字段)。仅返回基类上的受保护和内部字段;不返回基类上的私有字段。
如果您需要获取私有字段,则需要询问基本类型。 (使用 Type.BaseType 找到基类型,然后调用 GetFields 在那。)
instanceOfB.GetType().BaseType.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance );
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);