微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c#中枚举的xml序列化

那里.
我有以下类定义

[Serializable]
public enum FilterType
{
    [XmlEnum("1")]
    Text = 1,[XmlEnum("2")]
    Date = 2,[XmlEnum("3")]
    Combo = 3,[XmlEnum("4")]
    Multichoice = 4
}

public class FilterValues : List<string>
{
    public FilterType Type { get; set; } 
}

[Serializable]
public struct SerializablekeyvaluePair<K,V>
{
    public SerializablekeyvaluePair(keyvaluePair<K,V> p)
    {
        this.key = p.Key;
        this.value = p.Value;
    }

    private K key;
    public K Key
    {
        get { return key; }
        set { key = value; }
    }

    private V value;
    public V Value
    {
        get { return this.value; }
        set { this.value = value; }
    }
}

当我尝试序列化时,我无法使它在xml中序列化Type属性
SerializablekeyvaluePair的数组,其键为string类型,值类型为FilterValues(SerializablekeyvaluePair< string,FilterValues> []).
我得到了这个结果:

<?xml version="1.0" encoding="utf-16"?>  
<ArrayOfSerializablekeyvaluePairOfStringFilterValues xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">    
<SerializablekeyvaluePairOfStringFilterValues>      
<Key>Date</Key>     
 <Value>        <string>2012-5-16</string>      </Value>    
 </SerializablekeyvaluePairOfStringFilterValues>    
 <SerializablekeyvaluePairOfStringFilterValues>      
 <Key>bgName</Key>      <Value>        <string>4</string>      </Value>    
 </SerializablekeyvaluePairOfStringFilterValues>  
 </ArrayOfSerializablekeyvaluePairOfStringFilterValues>

请帮忙,我尽力了.

解决方法

它与这个问题有关: When a class is inherited from List<>,XmlSerializer doesn’t serialize other attributes

因此,正如在回答该问题时所指出的那样,您必须以至少三种可能的方式之一更改FilterValues实现:

-implement IXmlSerializable
-remove inheritance from List
-use another serializer

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐