使用派生对象反序列化数组

时间:2011-08-19 22:23:50

标签: c# xml xml-serialization

我有一个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>

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以编写一个custom serializer来反序列化几乎任何包含填充对象所需信息的格式。

答案 1 :(得分:0)

通常你可以使用

[XmlInclude(typeof(ChildType))]

在基类上,然后可以将一个列表中的多个类型反序列化为基类型。我认为需要有一个

type="music"

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

您可能必须实现ISerializable才能获得所需内容。