我可以在VB.NET中使用带有Structure的扩展方法吗?

时间:2010-08-21 02:56:19

标签: vb.net json serialization

我想知道我是否可以使用DataContractJsonSerializer来序列化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(Of T1,T2),我会收到以下错误:

  

找不到类型'KeyValuePair(Of String,Object)'上的公共成员'ToJSON'。

1 个答案:

答案 0 :(得分:2)

错误消息与DataContractJsonSerializer或方法内的任何内容无关。它无法找到方法本身。这告诉我,您忘记添加对定义此扩展方法的命名空间的引用。我道歉我不知道VB等价,但在C#中,这是我所说的using子句。