比方说,我有下面的类结构(从我的实际问题简化):如何控制序列化子类的元素名称?
Public Class PC_People_Container
Private _people_list As New List(Of PL_Person)
Public Sub New()
End Sub
Public Sub Add(ByVal item As PL_Person)
_people_list.Add(item)
End Sub
Public Property PeopleList As List(Of PL_Person)
Get
Return _people_list
End Get
Set(ByVal value As List(Of PL_Person))
_people_list = value
End Set
End Property
End Class
Public Class PL_Person
Private _Name As String
Public Property Name As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
Private _Contacts As ContactObject
Public Property Contacts As ContactObject
Get
Return _Contacts
End Get
Set(ByVal value As ContactObject)
_Contacts = value
End Set
End Property
Public Sub New()
End Sub
End Class
Public Class ContactObject
Public Property PhoneNumber As String
Public Property EmailAddress As String
Public Sub New()
End Sub
End Class
如果我是序列化这一点,我会得到我的XML默认分配的节点名称。这意味着我的根名为PC_People_Container
,列表中的每个人都标记为PL_Person
。我知道我可以使用<XmlRoot(ElementName:="PeopleContainer")>
更改根节点。麻烦在于为子类做这件事。我无法使用PL_Person
类中的<XmlRoot>
标记,因为不能有两个根元素,并且当我尝试在类上使用<XmlElement>
标记时,智能感知会引发适应,就像我在属性中那样。当它们被序列化为子节点时,甚至可以控制这些子类的命名?
有道理。感谢您的澄清。 – mounty