小编sco*_*ott的帖子

带有新枚举值的XmlSerializer

我们在项目中广泛使用xml序列化/反序列化来在多个应用程序之间传递数据.我们有一个共同的xsd,我们生成c#类,然后使用XmlSerializer从xml转到对象并返回.

我们遇到的问题是,当一个应用程序更新为添加新的枚举值但另一个应用程序尚未更新时.现在,未更新的应用程序尝试反序列化xml并失败,因为它不知道新的枚举.

如果我们有app1和app2,那么现场工作正常,那么app2将在xsd中使用新的枚举值进行更新,并在字段中更新到客户端.突然app1中断因为它不知道枚举,app1甚至可能不使用该枚举字段,对app1没有影响,但它仍然会中断.

有没有任何已知的方法.基本上我想要做的是定义当找不到枚举时做什么,使用默认值或者如果枚举为nullible类型并将其设置为null.

XmlSerializer和DataContractSerializer抛出异常都是这种情况.

我查看了自定义xml序列化项目YAXLib(http://www.codeproject.com/KB/XML/yaxlib.aspx),这也引发了异常,但是有源代码并且可以更改.该项目使用不同的属性属性,需要进行相当多的更改,但可能是可行的.

任何其他建议.

c# xml-serialization

5
推荐指数
3
解决办法
1万
查看次数

标签 统计

c# ×1

xml-serialization ×1