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

JYe*_*ton 5 c# enums serialization

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

例如:

public enum Options
{
    Odd,
    NonOdd // rename to 'Even'
}
Run Code Online (Sandbox Code Playgroud)

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

public enum Options
{
    Odd,
    [XmlEnum(Name = "NonOdd")]
    Even
}
Run Code Online (Sandbox Code Playgroud)

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

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

ato*_*erz 2

这就是我要做的:

  1. 将版本号添加到设置文件。
  2. 编写将旧版本 XML 文件转换为当前版本的代码。
  3. 更新枚举并增加版本号。

一旦你有了这个结构,你就可以根据需要多次重命名枚举元素。