2009-04-11 6 views
0

Ich habe eine Klasse, die eine Liste von Eigenschaften enthält, die einfach serialisiert werden können. Ich brauche aber eine dieser Eigenschaften eine Sammlung einer anderen Klasse zu enthalten, mir zu geben SubklassenSerialisierbare Klassensammlungen

Beispiel XML

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

Ich bin nicht sicher, wie das zu erreichen, wenn ich die Hauptklasse serialisiert.

Derzeit verwende ich diesen Befehl meiner Klasse serialisiert

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

     Dim strW As New StringWriter 
     oXS.Serialize(strW, Me) 
     VideoOptionsAsXML = strW.ToString 

Antwort

0

Sie würden einfach eine Eigenschaft auf der VideoOptions Klasse haben müssen, die eine Sammlung von property3 ist

wie unten eine Sammlung Klasse erstellen.

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 

haben eine Klasse für Ihren Artikel

Public Class Property3Item 
'Add in Item property 
End Class 

bauen Ihre Property3Collection Klasse

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

Fügen Sie die Eigenschaft auf Ihre VideoOptions Klasse

Public Property Property3() As Property3Collection 
     Get 

     End Get 
     Set(ByVal Value As Property3) 

     End Set 
    End Property 

Solange der oben Eigenschaft3I tem hat einen Konstruktor ohne params (benötigt für die XML-Serialisierung). Die Xmlserializer-Klasse serialisiert und deserialisiert dies in das von Ihnen angegebene Format ohne Probleme.

Hoffe, das hilft

Verwandte Themen