我想反映派生类型中的字段,但它返回基类型为 的字段。派生类型的GetFields
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()'。你确定你的类层次吗?您是否在独立项目中尝试过上述代码? – 2010-10-08 02:23:27
在上面的代码中,'derivedtype'甚至不是从'basetype'派生的,所以你只能看到'derivedvar'(带有BindingFlags.NonPublic),而不能'basevar'。 – dtb 2010-10-08 02:30:40
@dtb:我错过了。只要适当地推导就可以了;相同的结果。 – 2010-10-08 02:32:53