2011-12-07 24 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,那麼你應該能夠使用XML序列化/ deserialisation執行對你的工作,並創建一個請求類對象。