public class SerializeDictionary : IXmlSerializable { Dictionary<string, bool> serializeDictionary=new Dictionary<string,bool>(); #region IXmlSerializable Members public System.Xml.Schema.XmlSchema GetSchema() { return null; } public void ReadXml(System.Xml.XmlReader reader) { if (this.serializeDictionary==null) { this.serializeDictionary = new Dictionary<string, bool>(); } else { this.serializeDictionary.Clear(); } bool wasEmpty = reader.IsEmptyElement; if (wasEmpty) return; reader.Read(); reader.MoveToContent(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { string name = reader.Name; reader.ReadStartElement(); int value = 0; Int32.TryParse(reader.ReadString(), out value); bool isoutput = value == 1 ? true : false; reader.ReadEndElement(); if (!this.outputConfigDictionary.ContainsKey(name)) { this.outputConfigDictionary.Add(name, isoutput); } reader.MoveToContent(); } reader.ReadEndElement(); } public void WriteXml(System.Xml.XmlWriter writer) { if (this.serializeDictionary!=null) { foreach (string key in this.serializeDictionary.Keys) { writer.WriteStartElement(key); int value = this.outputConfigDictionary[key] ? 1 : 0; writer.WriteValue(value); writer.WriteEndElement(); } } } #endregion #region properties [XmlIgnore] public Dictionary<string, bool> SerializeDictionary { get { return this.serializeDictionary; } set { this.serializeDictionary = value; } } #endregion }