If a class that implements IDictionary is serializable (e.g. Dictionary<K,V> ), and K and V are serializable, then the standard .NET serialization mechanisms should work.
If the class that implements IDictionary is serialized, but K and V , then you can use two arrays to serialize the keys and associated values separately:
// before serialization IDictionary<string,int> dict; string[] keys = dict.Keys.ToArray(); int[] values = dict.Keys.Select(key => dict[key]).ToArray(); // after deserialization IDictionary<string,int> dict = new Dictionary<string,int>(); for (int i = 0; i < keys.Length; i++) dict.Add(keys[i], values[i]);
source share