30

反序列化时,DataContractSerializer 不仅要求元素名称匹配,还要求它相对于其他元素具有一定的顺序。

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

是否可以像这样设置 DataContract?

数据成员顺序中的介绍性段落表明顺序是可选的,但我还没有找到一种方法来实际使其成为可选。

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

4

1 回答 1

21

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

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

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

如果您正在调用 Web 服务(DataContractSerializer 的设计目的),您最好遵守合同中的顺序。

于 2009-10-03T11:39:28.340 回答