2009-10-03 19 views
26

デシリアライズ時に、DataContractSerializerは、要素と一致するだけでなく、他の要素に対して特定の順序であることも要求します。DataContractSerializerのフィールド順序を無視する

私のアプリケーションは、すべてのフィールドがその名前で一意に識別できるようなものです。したがって、XMLファイルで任意の順序で要素を含めることができ、デシリアライザが引き続き機能するようにすることができます。

このようにDataContractを設定することはできますか?

Data Member Orderの冒頭の段落では、(任意に)が適用されていることが示されていますが、実際にはオプションにする方法が見つかりませんでした。

フォローアップの質問Simple data file versioning with DataContractSerializer

答えて

17

ありません、それはオプションではありません。順序を明示的に指定することはオプションですが、そうでない場合は、リンクした基本規則(基本型の最初、アルファベット、...)によって順序が決まります。

序文では、生成されたプロキシを使用している場合など、注文を常に気にする必要がないことを暗示しています。

DataContractSerializerを使用してファイルを逆シリアル化する場合は、デシリアライズする前にXSLTを使用して正しい順序に変換することをお勧めします。

Webサービス(DataContractSerializerのために設計されたもの)を呼び出す場合は、契約の注文に忠実に従うことをお勧めします。

+4

私は既存のファイルに新しい値を追加しています。正しい名前だけでなく、正しい場所にも挿入する必要があるのは驚きでした。 –

関連する問題