如何重命名序列化为XML但继续支持以前名称的枚举?

时间:2017-02-27 19:17:27

标签: c# serialization enums

我有一个enum,它描述了可供用户选择作为设置的一部分的选项。这被序列化为XML。其中一个名称并不理想,我想重命名,但仍支持旧设置文件的反序列​​化。

例如:

public enum Options
{
    Odd,
    NonOdd // rename to 'Even'
}

我知道我可以重命名它,但是指定以前的序列化名称:

public enum Options
{
    Odd,
    [XmlEnum(Name = "NonOdd")]
    Even
}

虽然这有效,但它继续在XML文件中使用NonOdd,我不想这样做。

有没有办法支持对当前和已弃用的枚举名称进行反序列化,但序列化为当前名称?

1 个答案:

答案 0 :(得分:2)

这就是我要做的事情:

  1. 在设置文件中添加版本号。
  2. 编写将旧版XML文件转换为当前版本的代码。
  3. 更新枚举并增加版本号。
  4. 一旦你有了这个结构,就可以根据需要多次重命名枚举元素。