反序列化包含其他对象列表的对象的方法

时间:2014-11-28 21:41:16

标签: c# wpf list serialization deserialization

我有一个GameOptions对象,它包含Tiles列表和Options列表。将一个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);

1 个答案:

答案 0 :(得分:0)

这可能需要稍加调整,但这是一个粗略的反序列化实现:

    private GameOptions Deserialize()
    {

        var serializer = new XmlSerializer(typeof(GameOptions));
        using (var reader = new StreamReader(@"savedmap.xml"))
        {
            return (GameOptions)serializer.Deserialize(reader);
        }
    }