Не удается вызвать Serialize () для экземпляра сериализуемого одноэлементного класса в VB.NET - PullRequest
3 голосов
/ 28 ноября 2011

У меня есть одноэлементный класс VB.NET, который реализует Serializable:

Imports System.IO
Imports System.Runtime.Serialization

<Serializable()> Public Class CoordinateHistory
    Private Shared _thisInstance As CoordinateHistory

    Private gpsHistory As Dictionary(Of DateTime, GpsTimeCoordinate)
    Private gpsTimes As List(Of DateTime)

    Public Event NewStatusInformation(statusInfo As String)

    Protected Sub New()
        gpsHistory = New Dictionary(Of DateTime, GpsTimeCoordinate)
        gpsTimes = New List(Of DateTime)
    End Sub

    Public Shared Function getInstance() As CoordinateHistory
        If _thisInstance Is Nothing Then
            _thisInstance = New CoordinateHistory
        End If

        Return _thisInstance
    End Function

    Public Function getHistoryCount() As Integer
        Return gpsHistory.Count
    End Function

    ' bunch of other class functions below...
End Class

Моя проблема заключается в том, что я не могу фактически вызвать .Serialize() для экземпляра этого класса, как всепримеры онлайн-шоу.Что я делаю неправильно?Спасибо!

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Я считаю, что проблема в вашем защищенном сабе.Если вы измените его на Public, вы сможете правильно сериализовать.

Update

У меня не было проблем с сериализацией экземпляра по умолчанию с использованием BinaryFormatter:

Dim abData As Byte()

Using oStream As New MemoryStream
    Call (New BinaryFormatter).Serialize(oStream, CoordinateHistory.getInstance())

    abData = oStream.ToArray()
End Using

или XMLFormatter:

Dim sData As String

Using oStream As New MemoryStream
    Dim oSerializer As New XmlSerializer(CoordinateHistory.getInstance().GetType)

    oSerializer.Serialize(oStream, CoordinateHistory.getInstance())

    sData = Encoding.Default.GetString(oStream.ToArray())
End Using

Возможно, вы используете платформу сериализации?

2 голосов
/ 28 ноября 2011

Проблемой может быть ваше общедоступное мероприятие. Здесь есть статья здесь , в которой описываются проблемы сериализации классов VB.NET с событиями и способы их обхода.

Редактировать: См. Также, возможно, связанный вопрос .

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