- comparer = (IKeyComparer) info.GetValue ("KeyComparer", typeof(IKeyComparer));\r
- readOnly = info.GetBoolean ("ReadOnly");\r
- initialCapacity = info.GetInt32 ("InitialCapacity");\r
- hash = (Hashtable) info.GetValue ("HashTable", typeof(Hashtable));\r
- list = (ArrayList) info.GetValue ("ArrayList", typeof(ArrayList));\r
+ ((IDeserializationCallback) this).OnDeserialization (sender);\r
+ }\r
+\r
+ void IDeserializationCallback.OnDeserialization (object sender)\r
+ {\r
+ if (serializationInfo == null)\r
+ return;\r
+\r
+ comparer = (IEqualityComparer) serializationInfo.GetValue ("KeyComparer", typeof (IEqualityComparer));\r
+ readOnly = serializationInfo.GetBoolean ("ReadOnly");\r
+ initialCapacity = serializationInfo.GetInt32 ("InitialCapacity");\r
+\r
+ if (list == null)\r
+ list = new ArrayList ();\r
+ else\r
+ list.Clear ();\r
+\r
+ hash = new Hashtable (comparer);\r
+ object[] array = (object[]) serializationInfo.GetValue ("ArrayList", typeof(object[]));\r
+ foreach (DictionaryEntry de in array) {\r
+ hash.Add (de.Key, de.Value);\r
+ list.Add (de);\r
+ }\r