Mit*_*tch 8 c# xml versioning serialization deserialization
我正在使用XMLSerializer将此类保存到文件中.该类有一个字符串和一个枚举,如下所示:
public class IOPoint
{
string Name {get; set;}
TypeEnum {get; set;}
}
public enum TypeEnum
{
Temperature,
Pressure,
Humidity,
}
Run Code Online (Sandbox Code Playgroud)
序列化时,它看起来像这样.
<IOPoint>
<Name>Relative Humidity</Name>
<TypeEnum>Humidity</TypeEnum>
</IOPoint>
Run Code Online (Sandbox Code Playgroud)
我一直在序列化和反序列化这个对象,几个版本都没有问题.我不再想支持湿度,所以我将它从枚举中删除了.但是,这会在从XML反序列化时导致异常,因为TypeEnum字段中的值Humidity不是TypeEnum的有效值.这是有道理的,但如何处理呢?
我想做的就是忽略这个错误.并将值保留为null.我已经尝试实现OnUnknownElement XmlDeserilizationEvent类.不幸的是,这并没有发现这个错误.
关于如何捕获和忽略此错误的任何想法(我可以在反序列化完成后清理).
米奇
您可以将成员标记为已过时
public enum TypeEnum
{
Temperature,
Pressure,
[Obsolete]
Humidity
}
Run Code Online (Sandbox Code Playgroud)