忽略DataContractSerializer中的字段顺序

Rom*_*kov 27 .net datacontractserializer

反序列化时,DataContractSerializer不仅要求元素名称匹配,还要求它与其他元素的顺序相同.

我的应用程序是这样的,每个字段都可以通过其名称唯一标识.因此,我希望XML文件可以按任何顺序包含元素,并且反序列化器仍然可以工作.

是否可以像这样设置DataContract?

数据成员订单中的介绍性段落建议可选择强制执行订单,但我还没有找到实际使其可选的方法.

后续问题:使用DataContractSerializer进行简单的数据文件版本控制

Joe*_*Joe 18

不,它不是可选的.显式指定排序是可选的,但是否则顺序由您链接的基本规则确定(基本类型优先,字母,...).

介绍段落只是暗示您并不总是需要了解或关心订单 - 例如,如果您使用的是生成的代理.

如果您正在使用DataContractSerializer来反序列化文件,我能想到的最佳解决方案是在反序列化之前使用XSLT将其转换为正确的顺序.

如果您正在调用Web服务(DataContractSerializer的设计目的),您最好坚持合同中的订单.

  • 我只是在现有文件中添加一个新值.我必须将其插入正确的名称,但也必须插入正确的位置,这有点令人惊讶. (4认同)