2010-09-15 47 views
0

我有一個叫Resource類,這是由一種叫做ResourceMeta上溯造型沒有固定參考派生類型

我需要上溯造型ResourceMetaResource沒有它仍然認爲它類繼承是一種類型的ResourceMeta

當我嘗試使用實體框架保存我的對象時,它會抱怨映射不存在,這是正確的,因爲它將試圖保存ResourceMeta而不是Resource

我試過(Resource)resourceMeta但是這仍然保留ResourceMeta的類型只是限制Resource可用的屬性。

+0

假設Resource是ResourceMeta(ResourceMeta:Resource類)的超類,從ResourceMeta到Resource的投射將是向上投射,而不是向下投射。 – TheFogger 2010-09-15 12:12:43

+0

你是對的,抱歉的混淆。 – Tablet 2010-09-15 12:41:27

回答

0

簡單的話不可能的,你需要創建資源的新實例,然後返回

2

這是不可能的,你不能改變一個對象的實際類型。

要從ResourceMeta對象獲取Resource對象,必須使用ResourceMeta對象中的數據創建新的Resource對象。

+0

我只認爲這是可能的,因爲點3在http://stackoverflow.com/questions/2458025/how-to-properly-downcast-in-c-with-a-swig-generated-interface但是我沒有似乎有方法getCPtr – Tablet 2010-09-15 12:43:15

+0

@Shahin:是的,有可能破解一個對象,認爲它是一個不同的對象,但這很容易炸燬。例如,垃圾收集器在內存中偶爾地移動對象,如果它移動了一個對象,認爲它是一個不同的類型,它可能會損壞其他對象或內存管理本身。 – Guffa 2010-09-15 12:56:32

+0

啊,不是我準備冒險的事情......那麼這可能是通過序列化作爲期望的對象和反序列化? – Tablet 2010-09-15 13:02:32

0

是繼承ResourceMetaResource實例之間的關係的正確表示。如果沒有,你可以支持組合而不是繼承,並且以這種方式當你想保存資源實例時,你可以做resourceMetaInstance.Resource