我有一個類A
和一個類B
,它來自A
。我有一個B
的實例,即b
,我只想從中提取A
部分。喜歡的東西:從派生對象中提取基礎對象
var b = new B();
A a = (SomeCast)b;
美中不足的是a.GetType()
應該返回A
類型不B
。
是否可以不創建A
的實例並手動複製b
的所有字段和屬性?
更新 問題的根源來自實體框架,它不允許派生類型被添加以代替基類型。我有一個biiig派生類型(我不允許添加註釋),並且只想將基本部分添加到數據庫中。
我只是好奇,有一個簡單的答案。
基本多態性的結論是'B' *是*'A'爲所有意圖和目的的實例。 'a a = b;'在邏輯上是'A'的一個實例。你爲什麼還需要'GetType()'來證明這一點?退一步,這裏解決的問題是什麼? – David
問題的根源來自Entity Framework,它不允許派生類型被添加來代替基類型。我有一個biiig派生類型(我不允許添加註釋),並且只想將基本部分添加到數據庫中。 –
您應該明確地將該上下文添加到問題中,以及嘗試在EF中使用該變量以及導致錯誤的示例。這可能更像是一個EF問題而不是一個多態問題,並且您需要確保該問題吸引了正確的專家關注。 – David