protected override void OnDeserialization(object sender) { if (_sinfo != null) { _comparer = (IComparer <T>)_sinfo.GetValue(SerializationString.Comparer, typeof(IComparer <T>)); _max = (T)_sinfo.GetValue(SerializationString.Max, typeof(T)); _min = (T)_sinfo.GetValue(SerializationString.Min, typeof(T)); int count = _sinfo.GetInt32(SerializationString.Count); if (count != 0) { T[] data = (T[])_sinfo.GetValue(SerializationString.Data, typeof(T[])); if (data == null) { Thrower.SerializationException(Resources.Serialization_ValuesMissing); } _underlying = new SortedLinkedList <T>(data); } else { _underlying = new SortedLinkedList <T>(); } if (count != _underlying._count) { Thrower.SerializationException(Resources.Serialization_CountNotMatch); } _underlying._version = _sinfo.GetInt32(SerializationString.Version); _count = _underlying._count; UpdateSubList(); _sinfo = null; } }
/// <summary> /// Implements the <see cref="T:System.Runtime.Serialization.ISerializable"/> interface, and raises the deserialization event when the deserialization is complete. /// </summary> /// <param name="sender">The source of the deserialization event.</param> protected virtual void OnDeserialization(object sender) { if (_comparer == null) { if (_sinfo == null) { Thrower.SerializationException(Resources.Serialization_InvalidOnDeserialization); } _random = new Random(); _comparer = (IComparer <T>)_sinfo.GetValue(SerializationString.Comparer, typeof(IComparer <T>)); _count = _sinfo.GetInt32(SerializationString.Count); _head = new Node(default(T), MathHelper.Log2N(_count)); if (_count > 0) { T[] data = (T[])_sinfo.GetValue(SerializationString.Data, typeof(T[])); if (data == null) { Thrower.SerializationException(Resources.Serialization_ValuesMissing); } foreach (T t in data) { InternalAdd(t); } } _version = _sinfo.GetInt32(SerializationString.Version); _sinfo = null; } }
public virtual void OnDeserialization(object sender) { if (sinfo != null) { int size = sinfo.GetInt32(SerializationString.IndicesCount); comparer = (IEqualityComparer <T>)sinfo.GetValue(SerializationString.Comparer, typeof(IEqualityComparer <T>)); Initialize(size); if (size != 0) { T[] array = (T[])sinfo.GetValue(SerializationString.Data, typeof(T[])); if (array == null) { Thrower.SerializationException(Resources.Serialization_ValuesMissing); } for (int i = 0; i < array.Length; i++) { Add(array[i]); } } else { indices = null; } version = sinfo.GetInt32(SerializationString.Version); sinfo = null; } }
void IDeserializationCallback.OnDeserialization(object sender) { if (_info == null) { Thrower.SerializationException(Resources.Serialization_InvalidOnDeserialization); } this._heap = (PriorityQueue <T>)_info.GetValue(SerializationString.Collection, typeof(PriorityQueue <T>)); this._index = _info.GetInt32(SerializationString.Index); this._version = _info.GetInt32(SerializationString.Version); this._clone = (PriorityQueue <T>)_heap.Clone(); int num = 0; while (num < _index) { _current = _clone.Dequeue(); num++; } }
void IDeserializationCallback.OnDeserialization(object sender) { if (_list == null) { if (_info == null) { Thrower.SerializationException(Resources.Serialization_InvalidOnDeserialization); } _list = (SortedLinkedList <T>)_info.GetValue(SerializationString.Collection, typeof(SortedLinkedList <T>)); _version = _info.GetInt32(SerializationString.Version); _index = _info.GetInt32(SerializationString.Index); _current = (T)_info.GetValue(SerializationString.Current, typeof(T)); if (_list._sinfo != null) { _list.OnDeserialization(sender); } SetNode(); } _info = null; }