2009-10-12 62 views
1

我試圖發送一個具有通用鍵和值類型的項目列表到一個asp.net web服務。 我該怎麼做? 我試過List<Dictionary<String, String>>,但這不起作用。我沒有遇到異常,但當我在webserivice中斷時,我的集合爲空。 該數據可能看起來像這樣: {"Data":{"fieldtype":"integer","isrequired":true,"isrequirederror":"Invalid Data"}}. 但正如我所說,鍵是通用的,有時有更多的屬性,有時不是。發送一個哈希表到Webservice

THX很多

這篇文章不能幫助我的BTW: How to send a hashtable to an asmx webservice?

回答

1

如果您想要在服務中引入任何種類的泛型,那麼您將會遇到困難,特別是SOA和WCF - 從序列化/反序列化開始問題和完成互操作性問題。

請勿使用通用參數。由於讀/寫操作性能,散列表(或字典)僅在進程內使用纔有意義。如果您想通過電線以這種格式傳輸某些內容,請使用類似於以下結構的內容: 配對列表(字符串,字符串)。

0
{"Data": 
{"fieldtype":"integer", 
    "isrequired":true, 
    "isrequirederror":"Invalid Data" 
} 
} 

:這不是一個List<Dictionary<String, String>>
這是一個Dictionary<string, Dictionary<String, String>>
能幫助呢?

+0

現在我得到這個異常: { 「消息」:「無法將類型\ u0027System.String \ u0027的對象輸入\ u0027System.Collections.Generic.Dictionary'2 [System.String,System.String] \ u0027「,」StackTrace「:」at System.Web.Script.Serialization – k0ni 2009-10-12 12:27:36

1

實現IDictionary的類不能被序列化爲XML,它是XmlSerializer類的限制。通常的解決方法是執行IXmlSerializable來提供自定義的序列化邏輯,如shown here。另一個選擇是將字典轉換爲鍵/值對列表

+0

IXmlSerializable的解決方案對我來說不起作用,你能解釋其他解決方案嗎? – k0ni 2009-10-12 12:32:47

+0

你是什麼意思「不起作用」?你想做什麼? – 2009-10-12 12:37:47

+0

我該怎麼做呢?我添加了類並更新了我的Wevservice方法。 無論如何...我想我必須將所有值轉換爲字符串 – k0ni 2009-10-12 12:39:55