コード例 #1
0
        public void CanMakeAsync()
        {
            var instance    = new LongWait();
            var interceptor = new DispatchProxyInterceptor();
            var proxy       = interceptor.Intercept(instance, typeof(ILongWait), new AsyncInterceptionHandler()) as ILongWait;
            var timer       = Stopwatch.StartNew();

            proxy.DoLongOperation();
            Assert.True(timer.Elapsed < TimeSpan.FromSeconds(5));
        }
コード例 #2
0
        public void CanDoDispatchProxyInterception()
        {
            var instance    = new MyType();
            var interceptor = new DispatchProxyInterceptor();
            var handler     = new ModifyResultHandler();

            var proxy = this.InstanceInterception(interceptor, instance, handler) as IMyType;

            var result = proxy.MyMethod();

            Assert.Equal(20, result);
        }
コード例 #3
0
        public void CanCallBaseImplementation()
        {
            var instance    = new MyType();
            var interceptor = new DispatchProxyInterceptor();
            var handler     = new DelegateInterceptionHandler(arg => arg.Proceed());

            var proxy = this.InstanceInterception(interceptor, instance, handler) as IMyType;

            var result = proxy.MyMethod();

            Assert.Equal(0, result);
        }