/// <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="classType"></param> /// <param name="arguments"></param> /// <param name="interceptors"></param> /// <returns></returns> public static object CreateProxy(Type classType, object[] arguments, params Castle.DynamicProxy.IInterceptor[] interceptors) { //如果拦截器为0 if (interceptors.Length == 0) { return(Activator.CreateInstance(classType, arguments)); } Castle.DynamicProxy.ProxyGenerator proxy = new Castle.DynamicProxy.ProxyGenerator(); Castle.DynamicProxy.ProxyGenerationOptions options = new Castle.DynamicProxy.ProxyGenerationOptions(new ProxyGenerationHook()) { Selector = new InterceptorSelector() }; if (arguments == null || arguments.Length == 0) { return(proxy.CreateClassProxy(classType, options, interceptors)); } else { return(proxy.CreateClassProxy(classType, options, arguments, interceptors)); } }
/// <summary> /// 创建一个类型方式的拦截器(可传入参数) /// </summary> /// <param name="classType"></param> /// <param name="arguments"></param> /// <param name="interceptors"></param> /// <returns></returns> public static object CreateProxy(Type classType, object[] arguments, params Castle.DynamicProxy.IInterceptor[] interceptors) { //如果拦截器为0 if (interceptors.Length == 0) { return Activator.CreateInstance(classType, arguments); } Castle.DynamicProxy.ProxyGenerator proxy = new Castle.DynamicProxy.ProxyGenerator(); Castle.DynamicProxy.ProxyGenerationOptions options = new Castle.DynamicProxy.ProxyGenerationOptions(new ProxyGenerationHook()) { Selector = new InterceptorSelector() }; if (arguments == null || arguments.Length == 0) return proxy.CreateClassProxy(classType, options, interceptors); else return proxy.CreateClassProxy(classType, options, arguments, 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); }