.net 将空格分隔的字符串反序列化为通用列表
我有一个xml文件,其中的元素如下所示(为清晰起见,缩写):.net 将空格分隔的字符串反序列化为通用列表,.net,xml,vb.net,serialization,xml-serialization,.net,Xml,Vb.net,Serialization,Xml Serialization,我有一个xml文件,其中的元素如下所示(为清晰起见,缩写): 我想使用Xml反序列化将其映射到下面的类,但我找不到将tags属性映射到实际列表(字符串)的方法 _ _ 公营职位 作为整数的私有m_id 私有m_标记作为字符串 _ 公共属性Id()为整数 得到 返回m_id 结束 设置(ByVal值为整数) m_id=值 端集 端属性 ' _ 公共属性标记()作为(字符串的)列表 得到 返回m_标签 结束 设置(ByVal值作为列表(字符串)) m_标记=值 端集 端属性 末级 有什么方法可
我想使用Xml反序列化将其映射到下面的类,但我找不到将tags属性映射到实际列表(字符串)的方法
_
_
公营职位
作为整数的私有m_id
私有m_标记作为字符串
_
公共属性Id()为整数
得到
返回m_id
结束
设置(ByVal值为整数)
m_id=值
端集
端属性
' _
公共属性标记()作为(字符串的)列表
得到
返回m_标签
结束
设置(ByVal值作为列表(字符串))
m_标记=值
端集
端属性
末级
有什么方法可以覆盖默认的反序列化吗?我可能错了,但反序列化程序只会将其视为一个字符串,与“tag1tag2tag3tag4”相同。我不知道可以通过分隔符反序列化到列表中
您可以将属性序列化为变量,然后通过拆分为数组的字符串创建Tags()属性,然后再拆分为array.ToList()。我不确定是否有一种巧妙的反序列化方法,但这肯定会奏效 我认为最简单的方法是使用
RawTags
get/set属性进行序列化,使用Tags
readonly属性将RawTags解析为列表,但被序列化程序忽略:
<Serializable()>
<XmlRootAttribute("post")>
Public Class Post
Private m_id As Integer
Private m_tags As String
<XmlAttribute("id")>
Public Property Id() As Integer
Get
Return m_id
End Get
Set(ByVal value As Integer)
m_id = value
End Set
End Property
<XmlAttribute("tags")>
Public Property RawTags() As String
Get
Return m_tags
End Get
Set(ByVal value As String)
m_tags = value
End Set
End Property
<XmlIgnore>
Public ReadOnly Property Tags() As List(Of String)
Get
Return m_tags.Split(" ").ToList()
End Get
End Property
End Class
公营职位
作为整数的私有m_id
私有m_标记作为字符串
公共属性Id()为整数
得到
返回m_id
结束
设置(ByVal值为整数)
m_id=值
端集
端属性
公共属性RawTags()作为字符串
得到
返回m_标签
结束
设置(ByVal值作为字符串)
m_标记=值
端集
端属性
公共只读属性标记()作为(字符串的)列表
得到
返回m_标记。拆分(“”.ToList()
结束
端属性
末级
<Serializable()> _
<XmlRootAttribute("post")> _
Public Class Post
Private m_id As Integer
Private m_tags As String
<XmlAttribute("id")> _
Public Property Id() As Integer
Get
Return m_id
End Get
Set(ByVal value As Integer)
m_id = value
End Set
End Property
'<XmlAttribute("tags")> _
Public Property Tags() As List(Of String)
Get
Return m_tags
End Get
Set(ByVal value As List(Of String))
m_tags = value
End Set
End Property
End Class
<Serializable()>
<XmlRootAttribute("post")>
Public Class Post
Private m_id As Integer
Private m_tags As String
<XmlAttribute("id")>
Public Property Id() As Integer
Get
Return m_id
End Get
Set(ByVal value As Integer)
m_id = value
End Set
End Property
<XmlAttribute("tags")>
Public Property RawTags() As String
Get
Return m_tags
End Get
Set(ByVal value As String)
m_tags = value
End Set
End Property
<XmlIgnore>
Public ReadOnly Property Tags() As List(Of String)
Get
Return m_tags.Split(" ").ToList()
End Get
End Property
End Class