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