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)); }
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); }
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); }