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

标签 c# serialization enums

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

例如:

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

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

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

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

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

最佳答案

这是我会做的:

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

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

关于c# - 如何重命名序列化为 XML 但继续支持以前名称的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42493998/

相关文章:

c# - 在 C# 中将 XML 空日期反序列化为 DateTime

c# - 我应该如何命名一个枚举来描述一个字段是隐藏的、可选的还是必需的?

java - 为什么字节参数不被识别为整数?

java - JAXB - 从 XSD 生成类 - 将枚举转换为自定义 toString() 而不是枚举名称

c# - T4 - 字段初始值设定项不能引用非静态字段、方法或属性

c# - 如何计算 x 高度,即 Font 对象的 ex?

c# - .Net - 序列化对象

c# - 使用 Regex 替换特定的字符串出现但忽略其他基于相邻字符的字符串

c# - 如何在 .net 中生成 UTF-8 字符集中的所有字符

c# - 优化多维泛型数组的二进制序列化