tags:

views:

77

answers:

2

I have a class that contains a list of properties which serializes just fine. However I need one of those properties to contain a collection of another class to give me sub classes

Example XML

<VideoOptions>
<property1>value1</property1>
<property2>value2</property2>
<property3>
 <item>
  <property1>value1</property1>
 </item>
 <item>
  <property1>value1</property1>
 </item>
</property3>
</VideoOptions>

I'm not sure how to accomplish that when I serialize the main class.

Currently I use this command to serialize my class

Dim oXS As XmlSerializer = New XmlSerializer(GetType(VideoOptions))

        Dim strW As New StringWriter
        oXS.Serialize(strW, Me)
        VideoOptionsAsXML = strW.ToString
+1  A: 

Please check this, copy pasting the lot wouldn't be fair. This wil help you out, I think.

XML Serialization of Collection

Peter
Good example of the CollectionBase. However I don't see how it shows the property that pulls the "MyCollection" collection. That's the part I'm lost on.
A: 

You would simply have to have a property on the VideoOptions class which is a collection of Property3

Create a collection class as below.

Public Class Property3Collection
    Inherits CollectionBase

    Public Function Add(ByVal item As Property3Item) As Integer
        Return Me.List.Add(item)
    End Function

    Default Public ReadOnly Property Item(ByVal index As Integer) As Object
        Get
            Return CType(Me.List.Item(index), SingleItem)
        End Get
    End Property
End Class

Have a class for your item

Public Class Property3Item
'Add in Item property
End Class

build up your Property3Collection Class

Public Sub AddPropertyItem
   Dim newCol as New Property3Collection
   newCol.Add(New Property3Item)
End Sub

Add the property to your VideoOptions class

   Public Property Property3() As Property3Collection
        Get

        End Get
        Set(ByVal Value As Property3)

        End Set
    End Property

As long as the Property3Item has a constructor with no params (needed for xml serialization) the Xmlserializer class will serialize and deserialize this to the format you specified without a problem.

Hope this helps

Ben