xml文件中数据不正确时处理反序列化错误

时间:2019-04-27 14:17:38

标签: c# xml streamreader xmlserializer

我为用户输入编写了一个基本设置存储类,该类从XML文件加载和保存数据。当xml具有所有正确的值时,它会很好用。

但是,其中一个值是在版本更新中更改了某些接受值的枚举。因此,某些用户拥有的XML设置文件不再与最新版本兼容。

因为我知道此输入的所有可能的先前值,所以当解串器遇到这些值之一时,是否有可能将其读取为其他值?

public class UserInput
{
    //... long list of variables
    //enum that had its values changed from prior versions but still has the same name
    public MyEnum UserType { get; set; }

    private static XmlSerializer xs;

    static UserInput()
    {
        xs = new XmlSerializer(typeof(UserInput));
    }

    public void SaveToFile(string fileName)
    {
        using (StreamWriter sr = new StreamWriter(fileName))
        {
            xs.Serialize(sr, this);
        }
    }

    public static UserInput ReadFromFile(string fileName)
    {
        using (StreamReader sr = new StreamReader(fileName))
        {
            return xs.Deserialize(sr) as UserInput;
        }
    }
}

我希望我可以在上面的代码中插入一个检查,以便遇到更改的枚举时可以将其作为有效值加载。

0 个答案:

没有答案