Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将空格分隔的字符串反序列化为通用列表_.net_Xml_Vb.net_Serialization_Xml Serialization - Fatal编程技术网

.net 将空格分隔的字符串反序列化为通用列表

.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文件,其中的元素如下所示(为清晰起见,缩写):


我想使用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