2009-04-11 8 views
0

J'ai une classe qui contient une liste de propriétés sérialisables. Cependant, je besoin d'une de ces propriétés pour contenir une collection d'une autre classe pour me donner sous les classesCollections de classes sérialisables

Exemple XML

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

Je ne sais pas comment accomplir quand je sérialiser la classe principale.

Actuellement, j'utiliser cette commande pour sérialiser ma classe

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

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

Répondre

0

Vous simplement avoir une propriété sur la classe VideoOptions qui est une collection de property3

Créer une classe de collection comme ci-dessous.

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 

ont une classe pour votre article

Public Class Property3Item 
'Add in Item property 
End Class 

construire votre classe Property3Collection

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

Ajouter la propriété à votre VideoOptions classe

Public Property Property3() As Property3Collection 
     Get 

     End Get 
     Set(ByVal Value As Property3) 

     End Set 
    End Property 

Tant que le Property3I tem a un constructeur sans params (nécessaire pour la sérialisation xml) la classe Xmlserializer sérialisera et désérialisera ceci au format que vous avez spécifié sans problème.

Espérons que cela aide

Questions connexes