http://d.hatena.ne.jp/lord_hollow/20090206
http://d.hatena.ne.jp/lord_hollow/20090602/p1
上に書いてある方法だと、Dictionaryが空の時にエラーになるので少し手(色付け)を入れてる。
public class SerializableDictionary<Tkey, Tvalue> : Dictionary<Tkey, Tvalue>, IXmlSerializable { public System.Xml.Schema.XmlSchema GetSchema() { return null; } public void ReadXml(System.Xml.XmlReader reader) { XmlSerializer serializer = new XmlSerializer(typeof(KeyValue));bool isEmpty = reader.IsEmptyElement; reader.Read(); if (isEmpty) { return; }while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { KeyValue kv = serializer.Deserialize(reader) as KeyValue; if (kv != null) Add(kv.Key, kv.Value); } reader.Read(); } public void WriteXml(System.Xml.XmlWriter writer) { XmlSerializer serializer = new XmlSerializer(typeof(KeyValue)); foreach (var key in Keys) { serializer.Serialize(writer, new KeyValue(key, this[key])); } } public class KeyValue { public KeyValue() { } public KeyValue(Tkey key, Tvalue value) { Key = key; Value = value; } public Tkey Key { get; set; } public Tvalue Value { get; set; } } }
0 件のコメント:
コメントを投稿