我有2種類型:BaseQuestion
和Question
。 Question
繼承BaseQuestion
的一些屬性。現在我已經創建了一個Web API來使BaseQuestion
可用。數據類型Question
具有我不想提供的其他屬性。我有一種方法檢索Question
,我的初始計劃是將其隱式地上傳到BaseQuestion
。我認爲它會失去所有我不想訪問的額外屬性,我可以將其退回。 嗯,它不。這是我做的:C#:超類在upcast後仍然有子類信息
Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
bq的類型仍然是「問題」。我無法訪問BaseQuestion屬性,但我仍然可以在調試器中看到它們,並且它們位於發送給客戶端的JSON輸出中。
關於如何「強制」bq的類型爲BaseQuestion
並且沒有在子類中定義的任何屬性的任何想法?
變量類型BQ的是BaseQuestion。 bq引用的對象的運行時類型是問題。不知道你的意思是「強制bq是BaseQuestion類型」。您只能通過變量bq訪問BaseQuestion成員。 – lesscode
我認爲你的困惑並不瞭解你給出的內容是**引用**到內存中的對象。 –
西蒙,好點。然後讓我改述:如何創建一個類型爲Question的新對象並自動複製所有屬性值?自動地我的意思是我做**不**想實現它。恕我直言,這種情況是不是獨一無二的我的情況,應該由.NET覆蓋。 – Jan