Я написал базовый класс хранения настроек для пользовательских вводов, который загружает и сохраняет данные из 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;
}
}
}
Я надеюсь, что смогу вставить проверку в приведенный выше код, чтобы при обнаружении моего измененного перечисления его можно было загрузить в качестве допустимого значения.