0
我想知道是否可以使用DataContractJsonSerializer來序列化一個結構類型,還是它必須是一個引用/類類型?我可以在VB.NET中使用Structure的擴展方法嗎?
我有以下代碼:
<Extension()> Public Function ToJSON(ByVal target As Object) As String
Dim serializer = New System.Runtime.Serialization.Json.DataContractJsonSerializer(target.GetType)
Using ms As MemoryStream = New MemoryStream()
serializer.WriteObject(ms, target)
ms.Flush()
Dim bytes As Byte() = ms.GetBuffer()
Dim json As String = Encoding.UTF8.GetString(bytes, 0, bytes.Length).Trim(Chr(0))
Return json
End Using
End Function
。不過,如果我把它放在一個結構類型,如KeyValuePair(中T1,T2),我收到以下錯誤:
Public member 'ToJSON' on type 'KeyValuePair(Of String,Object)' not found.
嗯......奇怪。你是對的,那是問題所在。這確實教會了我一些我沒有意識到的東西。擴展名是DLL中公共模塊的公共函數。通過文件頂部的Import語句將DLL /名稱空間導入到我的aspx.vb文件中,並且出現此錯誤。我在web.config中添加了與'\ system.web \ pages \ namespaces'導入相同的導入,然後它正常工作。很顯然,在ASP.NET中,您需要通過web.config導入您的名稱空間,而不是通過VB文件中的Import語句導入?奇。 – eidylon 2010-08-21 03:16:24