我想反映派生類型中的字段,但它返回基類型爲 的字段。派生類型的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