2014-04-24 196 views
0

我創建了數據字典:傳遞字典作爲參數傳遞給函數

Dim data As New Dictionary(Of String, String) 
data.Add("customer", "TEST") 
data.Add("secretKeyId", "2222222222222") 
data.Add("secretKey", "333333333333333") 

,我有以下功能:

Public Shared Function Create(ByVal data As Dictionary(Of String, Object)) As [String] 
    ' Serializes the body into JSON using the fastJSON library. 
    Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(data) 
    Dim body As Byte() = Encoding.UTF8.GetBytes(json) .... 

我怎麼能叫Create函數並傳遞DATA與我輸入這個函數的所有鍵和值?我想嘗試:create(data.all)create(data)但它不起作用。

+0

請了解如何格式化您的問題 - 這可以使用發現[幫助頁面](http://stackoverflow.com/editing-help) – freefaller

+3

你可以擴展「它不工作」;腦力閱讀技能在清潔工中,但爲什麼它在另一個地方是'字典(字符串,字符串)'一個地方和'字典(字符串,對象)'? – Plutonix

+0

我認爲,這是不支持基於這裏的舊答案 - http://stackoverflow.com/questions/2149589/idictionarytkey-tvalue-in-net-4-not-covariant。這有什麼改變嗎? – shahkalpesh

回答

0

你試圖傳遞一個不兼容的數據類型,以你的方法:在您的來電顯示方式您的字典是string, string類型和你的函數等待string, object類型的字典。有兩種解決方法:

  • 要麼改變你的主要部分字典的簽名Dim data As New Dictionary(Of String, Object)
  • 或簽名更改爲方法的字典參數ByVal data As Dictionary(Of String, String)

一個可能的解決方案看起來像這樣:

Public Shared Function Create(ByVal data As Dictionary(Of String, String)) As [String] 
    ' Serializes the body into JSON using the fastJSON library. 
    Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(data) 
    return json 
end function 

召喚:

Dim data As New Dictionary(Of String, String) 
data.Add("customer", "TEST") 
data.Add("secretKeyId", "2222222222222") 
data.Add("secretKey", "333333333333333") 
Dim dataAsJson = Create(data) 
Console.WriteLine(dataAsJson) 

輸出:

{"customer":"TEST","secretKeyId":"2222222222222","secretKey":"333333333333333"} 

這也將在這種情況下正常工作,創造同樣的結果如上:

Public Shared Function Create(ByVal data As Dictionary(Of String, Object)) As [String] 
    ' Serializes the body into JSON using the fastJSON library. 
    Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(data) 
    return json 
end function 

Dim data As New Dictionary(Of String, Object) 
data.Add("customer", "TEST") 
data.Add("secretKeyId", "2222222222222") 
data.Add("secretKey", "333333333333333") 
Dim dataAsJson = Create(data) 
Console.WriteLine(dataAsJson) 
+0

謝謝餡餅。感謝您注意它。我甚至沒有看到那個 – user3570022

+0

很高興答案有幫助。 – pasty

相關問題