Могу ли я использовать метод расширения со структурой в VB.NET? - PullRequest
0 голосов
/ 21 августа 2010

Мне интересно, могу ли я использовать 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

И все же, если я вызываю его для типа Structure, такого как KeyValuePair (Of T1, T2), я получаю следующую ошибку:

Открытый член 'ToJSON' для типа 'KeyValuePair (Of String, Object)' не найден.

1 Ответ

2 голосов
/ 21 августа 2010

Сообщение об ошибке не имеет ничего общего с DataContractJsonSerializer или чем-либо внутри вашего метода. Он не может найти сам метод. Это говорит о том, что вы забыли добавить ссылку на пространство имен, в котором определен этот метод расширения. Я прошу прощения, я не знаю VB эквивалент, но в C # это пункт using, о котором я говорю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...