/// <inheritdoc/> public T Target(object target) { var proxyTemplate = _proxyFactory.GetProxyTemplate <T>(_interfaceTypes); var invocationHandler = CreateInvocationHandler(proxyTemplate, new StaticTargetInterceptor(target)); return(proxyTemplate.CreateProxy(invocationHandler, _arguments)); }
/// <summary> /// 根据当前参数类型和接口建立代理类 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="proxyFactory"></param> /// <param name="interfaceTypes"></param> /// <param name="invocationHandler"></param> /// <param name="arguments"></param> /// <returns></returns> public static T CreateProxy <T>(this IProxyFactory proxyFactory, IEnumerable <Type> interfaceTypes, IInvocationHandler invocationHandler, params object[] arguments) where T : class { if (proxyFactory == null) { throw new ArgumentNullException("proxyFactory"); } var proxyTemplate = proxyFactory.GetProxyTemplate <T>(interfaceTypes); return(proxyTemplate.CreateProxy(invocationHandler, arguments)); }
/// <summary> /// 根据当前参数类型和接口建立代理类 /// </summary> /// <param name="proxyFactory"></param> /// <param name="declaringType"></param> /// <param name="interfaceTypes"></param> /// <param name="invocationHandler"></param> /// <param name="arguments"></param> /// <returns></returns> public static object CreateProxy(this IProxyFactory proxyFactory, Type declaringType, IEnumerable <Type> interfaceTypes, IInvocationHandler invocationHandler, params object[] arguments) { if (proxyFactory == null) { throw new ArgumentNullException("proxyFactory"); } var proxyTemplate = proxyFactory.GetProxyTemplate(declaringType, interfaceTypes); return(proxyTemplate.CreateProxy(invocationHandler, arguments)); }
/// <summary> /// Returns a proxy template. /// </summary> /// <typeparam name="T">The declaring type.</typeparam> /// <param name="proxyFactory">The proxy factory.</param> /// <param name="interfaceTypes">The additional interface types.</param> /// <returns>The proxy template.</returns> public static IProxyTemplate <T> GetProxyTemplate <T>(this IProxyFactory proxyFactory, IEnumerable <Type> interfaceTypes) where T : class { var proxyTemplate = proxyFactory.GetProxyTemplate(typeof(T), interfaceTypes); return(new ProxyTemplate <T>(proxyTemplate)); }