我试图反映派生类型中的字段,但它返回了基本类型的字段。
public class basetype
{
string basevar;
}
public class derivedtype : basetype
{
string derivedvar;
}
在某些函数中:
derivedtype derived = new derivedtype();
FieldInfo[] fields = derived.GetType().GetFields();
这将返回basevar,但不包括derivedvar。我尝试过所有不同的绑定方式,但似乎并没有什么区别。
此外,我是在App_Code中的ASP.NET中进行此操作,其中basevar在App_Code中定义,而derivedvar是在App_Controls中定义的用户控件,类型不在范围内。
derivedvar
),一旦我将字段公开以将它们暴露给GetFields()
。 你确定你的类层次结构吗? 你尝试在独立项目中使用上面的代码了吗? - Michael Petrottaderivedtype
并没有从basetype
派生出来,因此您应该只看到derivedvar
(使用 BindingFlags.NonPublic),但不包括basevar
。 - dtb