可序列化的类集合

时间:2009-04-11 18:42:08

标签: asp.net vb.net

我有一个类,其中包含一系列属性,可以很好地序列化。但是我需要其中一个属性来包含另一个类的集合以给我子类

示例XML

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

当我序列化主类时,我不确定如何实现这一点。

目前我使用此命令序列化我的类

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

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

1 个答案:

答案 0 :(得分:0)

您只需要在VideoOptions类上拥有属性,该属性是Property3的集合

创建一个集合类,如下所示。

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

为您的项目设置课程

Public Class Property3Item
'Add in Item property
End Class

建立你的Property3Collection类

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

将属性添加到VideoOptions类

   Public Property Property3() As Property3Collection
        Get

        End Get
        Set(ByVal Value As Property3)

        End Set
    End Property

只要Property3Item有一个没有参数的构造函数(xml序列化需要),Xmlserializer类就会将它序列化并反序列化为你指定的格式而没有问题。

希望这有帮助