那里.
我有以下类定义:
我有以下类定义:
[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] 举报,一经查实,本站将立刻删除。