Дублирование происходит во время сериализации XML Class Object - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь сериализовать объект класса в XML, но в результате получается его удвоение. Я передаю объект в функцию только один раз, но дублирую к тому времени, когда он проходит сериализацию. При отладке я заметил, что в моем StringWriter поле CoreNewLine установлено на Длина = 2. Я продолжаю думать, что это проблема, но не знаю, как найти способ изменить его. Что-то еще мне не хватает в отношении моей сериализации?

Моя функция XML-сериализации

Public Shared Function ToXml(ByVal obj As Object) As String
    Try
        Dim serializer As XmlSerializer = New XmlSerializer(obj.[GetType]())

        Dim stringWrit As StringWriter = New StringWriter()
        Using writer = XmlWriter.Create(stringWrit)
            serializer.Serialize(stringWrit, obj)
            Return stringWrit.ToString()
        End Using

    Catch ex As Exception

        DumpException(ex)
        Return ex.ToString()
    End Try

End Function

Мой объект класса

<Serializable>
Public Class SPFolderOver

Public _files As List(Of SPFile)

Public _folders As List(Of SPFolderOver)

Public _name As String

Public _fullPath As String

<NonSerialized>
<XmlIgnore>
Public _props As Dictionary(Of EmailProperty, String)

Public _sp As Sharepoint

Public Property SPFiles() As List(Of SPFile)
    Get
        Return _files
    End Get
    Set(ByVal value As List(Of SPFile))
        _files = value
    End Set
End Property

Public Property SPFolders() As List(Of SPFolderOver)
    Get
        Return _folders
    End Get
    Set(ByVal value As List(Of SPFolderOver))
        _folders = value
    End Set
End Property


Public Property FolderName() As String
    Get
        Return _name
    End Get
    Set(ByVal value As String)
        _name = value
    End Set
End Property

<XmlIgnore>
Public Property Properties() As Dictionary(Of EmailProperty, String)
    Get
        Return _props
    End Get
    Set(ByVal value As Dictionary(Of EmailProperty, String))
        _props = value
    End Set
End Property

Public Property Folder() As Object
    Get
        'Return _folderObj
        Return Nothing
    End Get
    Set(ByVal value As Object)
        '_folderObj = value
    End Set
End Property


Public Property FullPath() As String
    Get
        Return _fullPath
    End Get
    Set(ByVal value As String)
        _fullPath = value
    End Set
End Property


Public Property SP() As Sharepoint
    Get
        Return _sp
    End Get
    Set(ByVal value As Sharepoint)
        _sp = value
    End Set
End Property

1 Ответ

0 голосов
/ 06 сентября 2018

Нашел проблему. Просто изменил поля объекта с Public на Private.

...