コード例 #1
0
        private DelegateSerializationHolder(SerializationInfo info, StreamingContext ctx)
        {
            DelegateSerializationHolder.DelegateEntry delegateEntry = (DelegateSerializationHolder.DelegateEntry)info.GetValue("Delegate", typeof(DelegateSerializationHolder.DelegateEntry));
            int num = 0;

            DelegateSerializationHolder.DelegateEntry delegateEntry2 = delegateEntry;
            while (delegateEntry2 != null)
            {
                delegateEntry2 = delegateEntry2.delegateEntry;
                num++;
            }
            if (num == 1)
            {
                this._delegate = delegateEntry.DeserializeDelegate(info);
            }
            else
            {
                Delegate[] array = new Delegate[num];
                delegateEntry2 = delegateEntry;
                for (int i = 0; i < num; i++)
                {
                    array[i]       = delegateEntry2.DeserializeDelegate(info);
                    delegateEntry2 = delegateEntry2.delegateEntry;
                }
                this._delegate = Delegate.Combine(array);
            }
        }