c# 支持XML序列化的泛型 Dictionary
来源:互联网 发布:mac终端如何保存退出 编辑:程序博客网 时间:2024/05/21 10:55
/// <summary> /// 支持XML序列化的泛型 Dictionary /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> [XmlRoot("SerializableDictionary")] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable { #region 构造函数 public SerializableDictionary() : base() { } public SerializableDictionary(IDictionary<TKey, TValue> dictionary) : base(dictionary) { } public SerializableDictionary(IEqualityComparer<TKey> comparer) : base(comparer) { } public SerializableDictionary(int capacity) : base(capacity) { } public SerializableDictionary(int capacity, IEqualityComparer<TKey> comparer) : base(capacity, comparer) { } protected SerializableDictionary(SerializationInfo info, StreamingContext context) : base(info, context) { } #endregion #region IXmlSerializable Members public System.Xml.Schema.XmlSchema GetSchema() { return null; } /// <summary> /// 从对象的 XML 表示形式生成该对象 /// </summary> /// <param name="reader"></param> public void ReadXml(System.Xml.XmlReader reader) { XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); bool wasEmpty = reader.IsEmptyElement; reader.Read(); if (wasEmpty) return; while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { reader.ReadStartElement("item"); reader.ReadStartElement("key"); TKey key = (TKey)keySerializer.Deserialize(reader); reader.ReadEndElement(); reader.ReadStartElement("value"); TValue value = (TValue)valueSerializer.Deserialize(reader); reader.ReadEndElement(); this.Add(key, value); reader.ReadEndElement(); reader.MoveToContent(); } reader.ReadEndElement(); } /**/ /// <summary> /// 将对象转换为其 XML 表示形式 /// </summary> /// <param name="writer"></param> public void WriteXml(System.Xml.XmlWriter writer) { XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); foreach (TKey key in this.Keys) { writer.WriteStartElement("item"); writer.WriteStartElement("key"); keySerializer.Serialize(writer, key); writer.WriteEndElement(); writer.WriteStartElement("value"); TValue value = this[key]; valueSerializer.Serialize(writer, value); writer.WriteEndElement(); writer.WriteEndElement(); } } #endregion }
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lovelytigerphd/archive/2009/12/23/5065229.aspx
- c# 支持XML序列化的泛型 Dictionary
- c# 支持XML序列化的泛型 Dictionary
- 使用XmlSerializer类将对象序列化为Xml格式保存_支持泛型的Dictionary
- 使用XmlSerializer类将对象序列化为Xml格式保存 - 支持泛型的Dictionary,list 等集合类型
- 序列化Dictionary属性到XML里
- C# Dictionary序列化/反序列化
- C# Dictionary序列化/反序列化
- C# 解决Dictionary不能序列化
- c# 随笔------Dictionary泛型的使用
- c# 随笔------Dictionary泛型的使用
- c#序列化XML
- C# 序列化 xml
- XML序列化 C#
- c# 泛型集合Dictionary
- c# 泛型集合Dictionary
- c# 泛型集合Dictionary
- c# 泛型集合Dictionary
- c# 泛型集合Dictionary
- XmlSerializer学习
- 如何学好游戏3D引擎编程
- 数字图像重采样检测
- 类似MSN右下角提示的窗口效果
- gzip压缩算法
- c# 支持XML序列化的泛型 Dictionary
- [Linq] Enumerable.Aggregate[转载]
- 一个游戏程序员的学习资料
- 用C#的Raw Socket实现网络封包监视
- 面向对象编程五大原则
- Opentaps运行错误
- 布料模拟
- 存储过程基本语法与常用函数
- 简明批处理(天极)