2011-12-07 9 views
1

WCFサービスが、注文が重要でない要求を受け入れる方法はありますか?つまり、次のものを送信して正しく逆シリアル化することができます。WCF - フィールドが任意の順序であることができる要求を送信する能力

<Request> 
    <Field1>Val1</Field1> 
    <Field2>Val2</Field2> 
    <Field3>Val3</Field3> 
</Request> 

または

<Request> 
    <Field3>Val3</Field3> 
    <Field1>Val1</Field1> 
    <Field2>Val2</Field2> 
</Request> 

または

<Request> 
    <Field2>Val2</Field2> 
    <Field3>Val3</Field3> 
    <Field1>Val1</Field1> 
</Request> 

等...

私はデータコントラクトシリアライザのデフォルトの動作を知っていますが、オーダーを無視することはできますか?異なる/カスタムのシリアライザが必要ですか?

どこでも決定的な回答があるようです。

乾杯、 ビリー

答えて

3

DataContractSerializerを使用する場合xmlは定義された順序である必要があります。アルファベット順のデフォルトのいずれかを使用します。または、あなたが定義したメンバーを飾ることを定義した順序で。

xmlを逆シリアル化しようとしたときに間違った順序になっている場合は、の正しいの場所にあるシリアライザの値のみを逆シリアル化します。

代わりにXMLSerializerを使用している場合、これはxmlが順序にある​​ことに依存せず、必要な動作である正しいノードを見つけたらデシリアライズします。

例としてXmlSerializerでat this tutorialを見てください。

1

あなたはXMLを送信している場合、あなたはあなたのための作業を実行し、Requestクラスのオブジェクトを作成するために、XMLシリアル化/デシリアライゼーションを使用することができるはずです。

関連する問題