2011-08-19 88 views
0

我有一個如下所示的XML文檔: 聲音和音樂都是從音頻基類派生的類型。它們存儲在List聲音集合中。我怎樣才能反序列化呢?因爲做簡單的(List)x.Deserialize會產生一個基類型列表。使用派生對象反序列化陣列

<sounds> 
<sound name="SFX_PunchObject"> 
    <file name="SFX_PunchObject.ogg" size="5414"/> 
</sound> 
<music name="HWAS_Cutscene1"> 
    <file name="HWAS_Cutscene1.m4a" size="135049"/> 
</music> 
</sounds> 

謝謝!

+0

您是在生產/序列化數據還是來自第三方? – Dennis

+0

其來自第三方 –

回答

0

你可以寫一個custom serializer從幾乎包含了必要的信息來填充你的對象的任何格式deseralize ..

0

通常情況下,你可以使用

[XmlInclude(typeof(ChildType))] 
在你的基類

,並可以再將一個列表中的多個類型反序列化爲基本類型。我相信需要有一個

type="music" 

屬性,而不是具有不同的根元素,但。

您可能必須實現ISerializable才能獲得所需的內容。

+0

看來,對於XmlInclude來說,工作元素必須包含xsi:type屬性 –

+0

是的,我相信這就是我所說的。 –