代码之家  ›  专栏  ›  技术社区  ›  eidylon

我可以用一个扩展方法来表示VB.NET?

  •  0
  • eidylon  · 技术社区  · 14 年前

    我想知道是否可以使用DataContractJsonSerializer序列化结构类型,或者它必须是引用/类类型?

    <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),我会得到以下错误:

    1 回复  |  直到 14 年前
        1
  •  2
  •   Timwi    14 年前

    DataContractJsonSerializer 或者你方法里的任何东西。它找不到方法本身。这向我表明您忘记添加对定义此扩展方法的命名空间的引用。很抱歉,我不知道VB的等价物,但在C中,它是 using 我在说的条款。