2014-04-02 14 views
7

Dość podstawowe pytanie, ale nie mogę znaleźć nigdzie odpowiedzi.Tworzenie nowego słownika w kopercie SOAP

Jak określić nowe wystąpienie Dictionary<string, string> w SOAP? Zasadniczo mam tę kopertę (pominięta koperta górny znacznik poziomu dla czytelności):

<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 jest majątek, ale to zawsze null. Przyjąłem, że tylko obecność własności w kopercie zostanie przekształcona do postaci pustej Dictionary<string, string>, jednak tak nie jest.

+0

Tradycyjnie słowniki nie można szeregować w .NET. To powiedziawszy, DataContractSerializer poradzi sobie z tym bez problemu. Podejrzewam, że twój problem nie jest serializerem. –

+0

Jaki jest twój powód do myślenia, że ​​będzie deserialized jako słownik? Jak jest zdefiniowany w schemacie? Czy próbowałeś skorzystać z usługi Reference? W takim razie jaki jest typ wygenerowanej własności? –

Odpowiedz

1

Jak mówi @flem, DataContractSerializer może dostarczyć wskazówek potrzebnych do udzielenia odpowiedzi. Serializowanie pustego słownika daje następujący kod XML. Spróbuj tego w swoim elemencie RequestInfo i sprawdź, czy działa (sam tego nie przetestowałem).

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

Czy osoba, która zgłosiła chęć komentowania? Jeśli to nie zadziała, zaktualizuję odpowiedź odpowiednio. –