public SerializableDictionary(SerializationInfo info, StreamingContext context) { int itemCount = info.GetInt32("count"); for (int i = 0; i < itemCount; i++) { KeyValueSerialization <TKey, TVal> kvp = (KeyValueSerialization <TKey, TVal>)info.GetValue(String.Format("Im{0}", i), typeof(KeyValueSerialization <TKey, TVal>)); this.Add(kvp.Key, kvp.Value); } }
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("count", this.Count); int itemIdx = 0; foreach (KeyValuePair <TKey, TVal> kvp in this) { KeyValueSerialization <TKey, TVal> kvs = new KeyValueSerialization <TKey, TVal>(); kvs.Key = kvp.Key; kvs.Value = kvp.Value; info.AddValue(String.Format("Im{0}", itemIdx), kvs, typeof(KeyValueSerialization <TKey, TVal>)); itemIdx++; } }