码迷,mamicode.com
首页 > 其他好文 > 详细

Dictionary序列化和反序列化

时间:2018-12-10 18:02:49      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:type   dict   his   iter   form   des   Matter   formatter   ret   

   //定义可序列化Dictionary类 
  [Serializable]
public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable { public SerializableDictionary() { } public void WriteXml(XmlWriter write) // Serializer { XmlSerializer KeySerializer = new XmlSerializer(typeof(TKey)); XmlSerializer ValueSerializer = new XmlSerializer(typeof(TValue)); foreach (KeyValuePair<TKey, TValue> kv in this) { write.WriteStartElement("SerializableDictionary"); write.WriteStartElement("key"); KeySerializer.Serialize(write, kv.Key); write.WriteEndElement(); write.WriteStartElement("value"); ValueSerializer.Serialize(write, kv.Value); write.WriteEndElement(); write.WriteEndElement(); } } public void ReadXml(XmlReader reader) // Deserializer { reader.Read(); XmlSerializer KeySerializer = new XmlSerializer(typeof(TKey)); XmlSerializer ValueSerializer = new XmlSerializer(typeof(TValue)); while (reader.NodeType != XmlNodeType.EndElement) { reader.ReadStartElement("SerializableDictionary"); reader.ReadStartElement("key"); TKey tk = (TKey)KeySerializer.Deserialize(reader); reader.ReadEndElement(); reader.ReadStartElement("value"); TValue vl = (TValue)ValueSerializer.Deserialize(reader); reader.ReadEndElement(); reader.ReadEndElement(); this.Add(tk, vl); reader.MoveToContent(); } reader.ReadEndElement(); } public XmlSchema GetSchema() { return null; } }

序列化:

using (FileStream fileStream = new FileStream(fileName, FileMode.Create))  
{  
    XmlSerializer xmlFormatter = new XmlSerializer(typeof(SerializableDictionary<string, string>));  
    xmlFormatter.Serialize(fileStream, this.serializableDictionary);  
}  

反序列化:

using (FileStream fileStream = new FileStream(fileName, FileMode.Open))  
{  
    XmlSerializer xmlFormatter = new XmlSerializer(typeof(SerializableDictionary<string, string>));  
    this.serializableDictionary = (SerializableDictionary<string,string>)xmlFormatter.Deserialize(fileStream);  
}  

 

 

Dictionary序列化和反序列化

标签:type   dict   his   iter   form   des   Matter   formatter   ret   

原文地址:https://www.cnblogs.com/TianPing/p/10096971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!