2009-10-03 83 views
26

反序列化時,DataContractSerializer不僅要求元素名稱匹配,還要求它相對於其他元素具有特定順序。忽略DataContractSerializer中的字段順序

我的申請是這樣的,每個領域可以由其名稱唯一標識。因此,我希望XML文件可以按任意順序包含元素,並且解串器仍然可以工作。

是否可以像這樣設置DataContract?

Data Member Order中的介紹性段落暗示強制執行訂單(可選),但我還沒有找到實際使其成爲可選項的方法。

後續問題Simple data file versioning with DataContractSerializer

回答

17

不,這不是可選的。明確指定排序是可選的,否則排序由您鏈接的基本規則(基本類型第一,字母,...)決定。

介紹性段落僅僅意味着您並不總是需要知道或關心訂單 - 例如,如果您使用的是生成的代理。

如果您使用DataContractSerializer反序列化文件,我能想到的最佳解決方案是在反序列化之前使用XSLT將其轉換爲正確的順序。

如果您打電話給Web服務(DataContractSerializer的設計目的是什麼),您最好堅持合同中的訂單。

+4

我只是將一個新的值添加到現有的文件。我不得不在正確的名字中插入它,而且在正確的位置插入。 – 2009-10-03 11:44:16