/// <summary> /// Initializes a new instance of the <see cref="StreamReceiverHolder"/> class. /// </summary> /// <param name="reader">The reader.</param> public StreamReceiverHolder(PortableReaderImpl reader) { var rcvType = reader.ReadByte(); _rcv = PortableUtils.ReadPortableOrSerializable <object>(reader); Debug.Assert(_rcv != null); var type = _rcv.GetType(); if (rcvType == RcvTransformer) { // rcv is a user ICacheEntryProcessor<K, V, A, R>, construct StreamTransformer from it. // (we can't marshal StreamTransformer directly, because it is generic, // and we do not know type arguments that user will have) _rcv = DelegateTypeDescriptor.GetStreamTransformerCtor(type)(_rcv); } _invoke = DelegateTypeDescriptor.GetStreamReceiver(_rcv.GetType()); }