/// <summary> /// Serializes a dictionary by converting it to two lists /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="dict"></param> /// <param name="stream">An opened stream. The stream must also be manually closed</param> public static void Serialize <TKey, TValue>(this Dictionary <TKey, TValue> dict, ref StreamWriter stream) { SerializeDictObject <TKey, TValue> serializeObject = new SerializeDictObject <TKey, TValue>(); foreach (KeyValuePair <TKey, TValue> kvp in dict) { serializeObject.Keys.Add(kvp.Key); serializeObject.Values.Add(kvp.Value); } XmlSerializer serializer = new XmlSerializer(serializeObject.GetType()); serializer.Serialize(stream, serializeObject); }
/// <summary> /// DeSerializes a dictionary by converting it to two lists /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="dict"></param> /// <param name="stream">An opened stream. The stream must also be manually closed</param> /// <returns>The deserialized dictionary</returns> public static Dictionary <TKey, TValue> DeSerialize <TKey, TValue>(this Dictionary <TKey, TValue> dict, ref StreamReader stream) { SerializeDictObject <TKey, TValue> serializeObject = new SerializeDictObject <TKey, TValue>(); XmlSerializer serializer = new XmlSerializer(serializeObject.GetType()); Dictionary <TKey, TValue> result = new Dictionary <TKey, TValue>(); serializeObject = (SerializeDictObject <TKey, TValue>)serializer.Deserialize(stream); for (int i = 0; i < serializeObject.Keys.Count; i++) { result.Add(serializeObject.Keys[i], serializeObject.Values[i]); } return(result); }