public static object CreateInterfaceProxyWithTargetInterface(Type interfaceType, object concreteObject) { var dynamicProxy = new Castle.DynamicProxy.ProxyGenerator(); var result = dynamicProxy.CreateInterfaceProxyWithTargetInterface( interfaceType, concreteObject, new[] { new MyExInterceptor() }); return(result); }
/// <summary> /// 创建一个实例方式的拦截器 /// </summary> /// <param name="proxyType"></param> /// <param name="target"></param> /// <param name="interceptors"></param> /// <returns></returns> public static object CreateProxy(Type proxyType, object target, params Castle.DynamicProxy.IInterceptor[] interceptors) { //如果拦截器为0 if (interceptors.Length == 0) { return(target); } Castle.DynamicProxy.ProxyGenerator proxy = new Castle.DynamicProxy.ProxyGenerator(); Castle.DynamicProxy.ProxyGenerationOptions options = new Castle.DynamicProxy.ProxyGenerationOptions(new ProxyGenerationHook()) { Selector = new InterceptorSelector() }; return(proxy.CreateInterfaceProxyWithTargetInterface(proxyType, target, options, interceptors)); }
/// <summary> /// 创建一个实例方式的拦截器 /// </summary> /// <param name="proxyType"></param> /// <param name="target"></param> /// <param name="interceptors"></param> /// <returns></returns> public static object CreateProxy(Type proxyType, object target, params Castle.DynamicProxy.IInterceptor[] interceptors) { //如果拦截器为0 if (interceptors.Length == 0) { return target; } Castle.DynamicProxy.ProxyGenerator proxy = new Castle.DynamicProxy.ProxyGenerator(); Castle.DynamicProxy.ProxyGenerationOptions options = new Castle.DynamicProxy.ProxyGenerationOptions(new ProxyGenerationHook()) { Selector = new InterceptorSelector() }; return proxy.CreateInterfaceProxyWithTargetInterface(proxyType, target, options, interceptors); }