【发布时间】:2014-11-28 21:41:15
【问题描述】:
我有一个 GameOptions 对象,它包含一个 Tiles 列表和一个选项列表。单个 GameOptions 对象被放入一个列表中,然后我将其序列化以给我一个类似于这样的格式:
<GameOptions>
<Tiles>
<Tile1>
</Tile1>
</Tiles>
<Options>
<Option1>
</Option1>
<Options>
</GameOptions>
我想知道如何将保存的文件反序列化,回到 GameOptions 对象,我可以访问 Tiles 和 Options 值?之前,当我需要读取 XML 文件时,我刚刚加载了文档,遍历了每个节点并复制了值,但是我认为这种方法不会再次起作用,因为有些节点属于 Tile 类,而其他人属于 Options 类。先感谢您!
这是我最初用来序列化的代码:
XmlSerializer serializer = new XmlSerializer(gameSave.GetType());
StreamWriter writer = new StreamWriter(@"savedmap.xml");
serializer.Serialize(writer.BaseStream, gameSave);
【问题讨论】:
-
I am wondering how can I deseialize the saved file使用 XmlSerializer。但更好的是,在想知道之前,先阅读一些关于 xml 的文档。 -
任何你以有效的 xml 或 json 格式序列化的东西都可以用同样的机制进行反序列化。你用什么来序列化这个?你尝试反序列化什么?
-
与代码一样,架构通常不应包含
Tile1、Tile2、..TileN属性/键。在 XML 和 JSON 结构下都有标准的集合处理.. 在任何情况下,唯一的要求是反序列化器知道如何“撤消”序列化,这应该由一组规则定义.. 你(或更好,一个标准的序列化库)定义。 -
无论如何,msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx 可能是一个不错的起点。
标签: c# wpf list serialization deserialization