I posted some examples Friday but they had more stuff in it then they needed.  Here is 
a more basic example of this bug.  Below is two classes, code to put on a form with a 
button1 and the error message I am getting.  Notice: if I replace the items added to 
the arraylist (sub load) with strings instead of objects, the serialization works.  
Why does serialization work with an arraylist of strings and not objects?


Error:
An unhandled exception of type 'System.InvalidOperationException' occurred in 
system.xml.dll

Additional information: There was an error generating the XML document.



Public Class DataHolder
    Dim mArray As New ArrayList()
    <Xml.Serialization.XmlArray()> _
    Public Property Array() As ArrayList
        Get
            Return mArray
        End Get
        Set(ByVal Value As ArrayList)
            mArray = Value
        End Set
    End Property

    Public Sub Load()
        Dim v As New ArrayItem()
        v.Data = "First Element"
        Me.mArray.Add(v)

        v = New ArrayItem()
        v.Data = "Second Element"
        Me.mArray.Add(v)
    End Sub

    Public Function GetXML()
        Me.Array.TrimToSize()
        Dim serializer As New 
System.Xml.Serialization.XmlSerializer(GetType(DataHolder))
        Dim writer As New System.IO.StringWriter()
        Dim Obj As DataHolder
        Obj = Me
        serializer.Serialize(writer, Obj)
        Dim s As String
        s = writer.ToString
        Console.Write(s)
        writer.Close()
        Return s
    End Function
End Class


Public Class ArrayItem
    Dim mData As String
    Public Property Data() As String
        Get
            Return mData
        End Get
        Set(ByVal Value As String)
            mData = Value
        End Set
    End Property
End Class


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles Button1.Click
    Dim X As New DataHolder()
    X.Load()
    MsgBox(X.GetXML)
End Sub

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to