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;
     }
 }
Beispiel #4
0
            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;
 }