示例#1
0
        public T CreateProxy <T>(IClientPipeline pipeline) where T : class
        {
            ContractMetadata contract = BoltFramework.GetContract(typeof(T));
            var interceptor           = new ChannelInterceptor();
            var options = new ProxyGenerationOptions
            {
                BaseTypeForInterfaceProxy = _baseProxy
            };

            ProxyMetadata metadata = _metadatas.GetOrAdd(typeof(T), v => new ProxyMetadata(_baseProxy));
            var           proxy    = _generator.CreateInterfaceProxyWithoutTarget <T>(
                options,
                interceptor);

            ProxyBase proxyBase = (ProxyBase)(object)proxy;

            proxyBase.Contract = contract;
            proxyBase.Pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline));

            interceptor.Proxy    = proxyBase;
            interceptor.Metadata = metadata;
            return(proxy);
        }
 public void AddInterceptor(int index, ChannelInterceptor interceptor)
 {
     this.ChannelInterceptor.Insert(index, interceptor);
 }
 public void RemoveInterceptor(ChannelInterceptor interceptor)
 {
     this.ChannelInterceptor.Remove(interceptor);
 }
 public void AddInterceptor(ChannelInterceptor interceptor)
 {
     this.ChannelInterceptor.Add(interceptor);
 }