我正在开发一个.NET项目,在项目的整个生命周期中创建了相同类型对象的多个版本 - 大多数新版本添加了一两个字段。但是,现在我希望为旧版本的用户缓解问题。
我的目标是当用户尝试使用新程序打开旧版本的序列化对象时,程序会自动将默认值分配给文件的折旧版本中缺少的字段。
例如,假设我有一个带有两个布尔字段的类 - RepeatSound和RepeatForever。该程序的第一个版本不知道如何永远重复,所以它只保存了RepeatSound:
<anyType xsi:type="Sound">
<RepeatSound>true</RepeatSound>
</anyType>
但新文件如下所示:
<anyType xsi:type="Sound">
<RepeatSound>true</RepeatSound>
<RepeatForever>true</RepeatForever>
</anyType>
我的目标是当我反序列化新程序中的第一个文件时,它将创建Sound对象,但只是将RepeatForever的值默认为false。现在尝试反序列化第一个对象会引发异常。
提前感谢您的回复
编辑:我正在使用“XmlSerializer”类
答案 0 :(得分:0)
参见this page特别是关于minOccurs = 0和默认值属性
的部分答案 1 :(得分:0)
我相信您将不得不实施[IXmlSerializable][1]
接口来自行进行反序列化。