c# - XmlSerializer : How to Deserialize an enum value that no longer exists

标签 c# xml serialization versioning deserialization

我正在使用 XMLSerializer 将此类保存到文件中。该类有一个字符串和一个枚举,如下所示:

public class IOPoint
{
     string Name {get; set;}
     TypeEnum {get; set;}
}


public enum TypeEnum
{
    Temperature,
    Pressure,
    Humidity,
}

序列化后看起来像这样。

<IOPoint>
  <Name>Relative Humidity</Name>
  <TypeEnum>Humidity</TypeEnum>
</IOPoint>

我一直在序列化和反序列化这个对象,对于几个版本都没有问题。我不想再支持 Humidity,所以我将它从枚举中移除。但是,这会在从 XML 反序列化时导致异常,因为 TypeEnum 字段中的值 Humidity 不是 TypeEnum 的有效值。这是有道理的,但如何处理呢?

我想做的就是忽略这个错误。并将该值保留为空。我试过实现 OnUnknownElement XmlDeserilizationEvent 类。不幸的是,这并没有发现这个错误。

关于如何捕获和忽略此错误的任何想法(我可以在反序列化完成后进行清理)。

米奇

最佳答案

您可以将成员标记为过时

public enum TypeEnum
{
    Temperature,
    Pressure,
    [Obsolete]
    Humidity
}

关于c# - XmlSerializer : How to Deserialize an enum value that no longer exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708240/

相关文章:

c# - 查看NLog中是否发生日志事件

c# - 如何在 C#/Silverlight 中实现带通滤波器

c# - 在运行时从 XSD 生成类

android - 如何在按下时更改 Material float 操作按钮的颜色?

C# XMLSerializer 临时目录问题

c# - FullCalendar 提前一小时

c# - 使用 xsl 样式表的前三行 xml 文档的正确内容

javascript - 读取变量个数的子节点?

java - 包含多个对象的 ArrayList 的序列化,不保存对象状态

json - GSON 将带有日历的对象反序列化为带有 Mongo 日期的 json 并返回