反序列化包含其他对象列表的对象的方法
本文关键字:对象 方法 包含 列表 反序列化 其他 | 更新日期: 2023-09-27 18:32:22
我有一个对象GameOptions,其中包含一个图块列表和一个选项列表。将单个 GameOptions 对象放入一个列表中,然后对其进行序列化以提供类似于以下内容的格式:
<GameOptions>
<Tiles>
<Tile1>
</Tile1>
</Tiles>
<Options>
<Option1>
</Option1>
<Options>
</GameOptions>
我想知道如何将保存的文件分解回游戏选项对象,我可以访问图块和选项值?以前,当我需要读取XML文件时,我只是加载文档,遍历每个节点并复制值,但是我认为此方法不会再次起作用,因为某些节点属于Tile类,而其他节点属于选项类。提前谢谢你!
这是我首先用来序列化的代码:
XmlSerializer serializer = new XmlSerializer(gameSave.GetType());
StreamWriter writer = new StreamWriter(@"savedmap.xml");
serializer.Serialize(writer.BaseStream, gameSave);
这可能需要一些调整,但这里有一个粗略的反序列化实现:
private GameOptions Deserialize()
{
var serializer = new XmlSerializer(typeof(GameOptions));
using (var reader = new StreamReader(@"savedmap.xml"))
{
return (GameOptions)serializer.Deserialize(reader);
}
}