2009-08-11 24 views
2

サービスメソッドのパラメータとしてカスタムクラスを使用するRESTful WCFアプリケーションがあります。これらのクラスは[DataContract]属性で装飾され、各プロパティは[DataMember]属性で装飾されています。データメンバの順序とXMLの逆シリアル化

デシリアライザは、MSDNの次のデータメンバー注文ページ( http://msdn.microsoft.com/en-us/library/ms729813.aspx)と一貫して機能します。

つまり、XML形式の入力データの要素は、このように記述された順序に従うものと想定しています。実際、要素の1つが順序が乱れている場合、デシリアライズ後には、サブミットされた値はなく、むしろnullになります。

呼び出しプログラムがxml要素を自由に(つまり、任意の順序で)並べ替えることができ、要素の並べ替えごとに逆シリアル化が正しく行われるようにする良い方法はありますか?

+0

私はこの質問がかなり古くなっていることを認識していますが、これに続く同様のテーマの質問です - http://stackoverflow.com/questions/1727682/wcf-disable-deserialization-order-sensitivity – Reddog

+0

[WCF Datacontract、デシリアライズしない](https://stackoverflow.com/questions/2519240/wcf-datacontract-some-fields-do-not-deserialize) – Vlad

答えて

2

ほとんどのXMLでは、要素を任意の順序で入力することはできません。私が知る限り、これを許可する正当な理由はありません。

データ契約シリアライザは、これをまったくサポートしていません。それはオーバーヘッドを追加し、価値を提供しません。

発信者が正しいXMLを送信できないのはなぜですか?

+0

ジョン、あなたの答えに感謝します。あなたは「データ契約シリアライザはこれをまったくサポートしていません」と言っています。直接このことを述べているMicrosoftのドキュメントを教えてもらえますか、それともさまざまなソースからまとめましたか? –

+0

@Ralph:あなたは自分自身でこう言った:「XML形式の入力データの要素がそのような順序に従うと期待している」また、データコントラクトのシリアライゼーションとXMLシリアライゼーションの違いについての長年にわたるさまざまな書き上げによって、データコントラクトのシリアライゼーションが迅速かつ簡単に行われることが明確になりました。選択肢は「シンプル」ではなく、価値がない。 –

+0

@Ralph:あなたがこれをやりたい理由を言うためにあなたの質問を更新してください。発信者が正しいXMLを送信できないのはなぜですか? –

関連する問題