Необходимо преобразовать объект в XML и получить ошибку - PullRequest
0 голосов
/ 15 февраля 2010

У меня есть этот класс:

  <Serializable()> _

   Public Class Bonder
    ''' <summary>
    ''' General information
    ''' </summary>
    ''' <remarks></remarks>
    Public BonderName As String
    Public Serial_Number As String
    Public System_Type As String
    Public DM_Version As String
    Public RTS_Build As String
    Public RTS_Label As String
    Public CPU_Boot_Rom As String
    Public BondHead_1 As String = ""
    Public BondHead_2 As String = ""
    Public IP1 As String
    Public IP2 As String
    Public LoadedLeadFrameSetup As String
    Public LoadedMagazineHandler As String
    Public LoadedProcessProgram As String

    ''' <summary>
    ''' Configuration Information
    ''' </summary>
    ''' <remarks></remarks>
    Public ConfigurationKVP As New ArrayList


    ''' <summary>
    ''' Devices on the Bonder
    ''' </summary>
    ''' <remarks></remarks>
    Public DevicesOnBonder As New ArrayList

    ''' <summary>
    ''' RTS server information
    ''' </summary>
    ''' <remarks></remarks>
    Public ServerInfo As New ArrayList


    ''' <summary>
    ''' RTS Options selected
    ''' </summary>
    ''' <remarks></remarks>
    Public Options As New ArrayList

End Class`

Это мой код для его сериализации и перевода в формат XML:

  Dim serializer As XmlSerializer
    serializer = New XmlSerializer(currentBonderSetup.GetType)
    Dim tw As New StreamWriter("c:\book1.xml")
    serializer.Serialize(tw, currentBonderSetup)
    tw.Close()

Куда я иду не так?Я думаю, что проблема из ArrayLists, но я не знаю, как ее решить.ArrayLists содержит другие объекты, которые имеют атрибут Serializeable.

Вот другие классы

<Serializable()> _
Public Class Configs
    Public Item As String
    Public Value As String

    Public Sub New(ByVal key As String, ByVal result As String)
        Item = key
        Value = result
    End Sub

End Class

<Serializable()> _
Public Class BonderDevices
    Public Device_Type As String
    Public Instance As String
    Public Board_Rev As String
    Public Software_Ver As String
    Public Status As String
    Public Data As String

End Class
<Serializable()> _
Public Class ServerInfo
    Public Type As String
    Public Value As String
End Class

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010

Добавить конструктор параметров к Configs?

   Public Sub New()

   End Sub

Возможно, стоит подумать над тем, чтобы дать сериализатору подсказку о типах, передав массив конструкторов в конструктор.

1 голос
/ 15 февраля 2010

попробуйте сконструировать ваш сериализатор так ...

var s = new XmlSerializer(typeof(Bonder), new Type[]{typeof(Configs),typeof(BonderDevices),typeof(ServerInfo)});

и, да, вам нужны конструкторы по умолчанию без параметров для всех ваших типов.

в VB

Dim s = New XmlSerializer(GetType(Bonder), New Type() {GetType(Configs), GetType(BonderDevices), GetType(ServerInfo)})
...