Beispiel #1
0
        /// <inheritdoc/>
        public T Target(object target)
        {
            var proxyTemplate     = _proxyFactory.GetProxyTemplate <T>(_interfaceTypes);
            var invocationHandler = CreateInvocationHandler(proxyTemplate, new StaticTargetInterceptor(target));

            return(proxyTemplate.CreateProxy(invocationHandler, _arguments));
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        /// <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));
        }