Ignore field order in DataContractSerializer

爷,独闯天下 提交于 2019-12-17 16:32:05

问题


When deserializing, DataContractSerializer requires not only that an element name matches, but also that it is in a certain order with respect to the other elements.

My application is such that every field can be uniquely identified by its name. I would therefore like it to be possible for the XML file to contain the elements in any order and for the deserializer to still work.

Is it possible to set up a DataContract like this?

The introductory paragraph in Data Member Order suggests that order is enforced optionally, but I haven't found a way to actually make it optional.

Follow-up question: Simple data file versioning with DataContractSerializer


回答1:


No it's not optional. It's optional to explicitly specify an ordering, but otherwise the order is determined by the basic rules you linked to (base types first, alphabetic, ...).

The introductory paragraph is simply implying that you don't always need to know or care about the order - for example if you are using a generated proxy.

If you're using DataContractSerializer to deserialize a file, the best solution I can think of would be to use XSLT to transform it into the correct order before deserializing.

If you're calling a web service (what DataContractSerializer was designed for), you're better off sticking to the order in the contract.



来源:https://stackoverflow.com/questions/1513525/ignore-field-order-in-datacontractserializer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!