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
-
Please check this, copy pasting the lot wouldn't be fair. This wil help you out, I think.
-
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
0 comments:
Post a Comment