2014-04-02 62 views
7

很基本的問題,但我似乎無法在任何地方找到答案。在SOAP信封中創建新字典

如何在SOAP中指定Dictionary<string, string>的新實例?基本上我有這個信封(信封ommitted爲了可讀性頂級標籤):

<soapenv:Body> 
    <tem:LogInWithCredentials>  
     <tem:Request>    
     <ttf1:Password>password</ttf1:Password>   
     <ttf1:UserName>username</ttf1:UserName> 
     <ttf1:RequestInfo></ttf1:RequestInfo> 
     </tem:Request>  
    </tem:LogInWithCredentials> 
</soapenv:Body> 

RequestInfo是有問題的屬性,但它總是null。我認爲只要信封中的財產存在將被反序列化爲一個空的Dictionary<string, string>,但事實並非如此。

+0

傳統上,字典在.NET中不可序列化。也就是說,DataContractSerializer可以處理這個沒有問題。我懷疑你的問題不是序列化程序。 –

+0

你認爲將被反序列化爲字典的原因是什麼?它在架構中如何定義?而且,您是否嘗試使用服務參考?在那種情況下,生成的屬性的類型是什麼? –

回答

1

正如@flem所說,DataContractSerializer可能會提供回答這個問題所需的線索。序列化一個空字典給出了以下XML。在你的RequestInfo元素中嘗試一下,看看它是否有效(我沒有自己測試過)。

<ArrayOfKeyValueOfstringstring 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> 
+0

downvoter會照顧評論嗎?如果它不起作用,我會相應地更新答案。 –