Esempio n. 1
0
        /// <summary>
        /// 构造Class Proxy实例
        /// </summary>
        /// <param name="declaringType">代表declaringType</param>
        /// <param name="interfaceTypes">代表代理所实现的接口列表</param>
        /// <param name="h">调用处理器</param>
        /// <param name="mixins"></param>
        /// <param name="arguments">代理构造器参数</param>
        /// <returns></returns>
        public static object NewProxyInstance(Type declaringType,
                                              Type[] interfaceTypes,
                                              IInvocationHandler h,
                                              object[] mixins = null,
                                              params object[] arguments)
        {
            Guard.NotNull(declaringType, "parentType");
            Guard.NotNull(h, "h");

            if (mixins != null && mixins.Length != 0)
            {
                var mixinDictionary = GetMixinDictionary(mixins, interfaceTypes);

                h = new MixinInvocationHandler(mixinDictionary, h);
            }

            return(ProxyFactory.CreateProxy(declaringType, interfaceTypes, h, arguments));
        }
Esempio n. 2
0
        /// <summary>
        /// 构造Class Proxy实例
        /// </summary>
        /// <param name="declaringType">代表declaringType</param>
        /// <param name="interfaceTypes">代表代理所实现的接口列表</param>
        /// <param name="h">调用处理器</param>
        /// <param name="mixins"></param>
        /// <param name="arguments">代理构造器参数</param>
        /// <returns></returns>
        public static object NewProxyInstance(Type declaringType,
            Type[] interfaceTypes, 
            IInvocationHandler h,
            object[] mixins = null ,
            params object[] arguments)
        {
            Guard.NotNull(declaringType, "parentType");
            Guard.NotNull(h, "h");

            if (mixins != null && mixins.Length != 0)
            {
                var mixinDictionary = GetMixinDictionary(mixins, interfaceTypes);

                h = new MixinInvocationHandler(mixinDictionary, h);
            }

            return ProxyFactory.CreateProxy(declaringType, interfaceTypes, h, arguments);
        }
Esempio n. 3
0
        /// <summary>
        /// 构造Interface Proxy实例
        /// </summary>
        /// <param name="interfaceTypes">代表代理所实现的接口列表,不运行null</param>
        /// <param name="h"></param>
        /// <param name="mixins"></param>
        /// <returns></returns>
        public static object NewProxyInstance(Type[] interfaceTypes,
                                              IInvocationHandler h,
                                              object[] mixins = null)
        {
            Guard.NotNull(h, "h");

            if (interfaceTypes == null || interfaceTypes.Length == 0)
            {
                throw new ArgumentNullException("interfaceTypes");
            }

            if (mixins != null && mixins.Length != 0)
            {
                var mixinDictionary = GetMixinDictionary(mixins, interfaceTypes);

                h = new MixinInvocationHandler(mixinDictionary, h);
            }

            return(ProxyFactory.CreateProxy(typeof(object), interfaceTypes, h));
        }
Esempio n. 4
0
        /// <summary>
        /// 构造Interface Proxy实例
        /// </summary>
        /// <param name="interfaceTypes">代表代理所实现的接口列表,不运行null</param>
        /// <param name="h"></param>
        /// <param name="mixins"></param>
        /// <returns></returns>
        public static object NewProxyInstance(Type[] interfaceTypes,
            IInvocationHandler h,
            object[] mixins = null)
        {
            Guard.NotNull(h, "h");

            if (interfaceTypes == null || interfaceTypes.Length == 0)
                throw new ArgumentNullException("interfaceTypes");

            if (mixins != null && mixins.Length != 0)
            {
                var mixinDictionary = GetMixinDictionary(mixins, interfaceTypes);

                h = new MixinInvocationHandler(mixinDictionary, h);
            }

            return ProxyFactory.CreateProxy(typeof(object),interfaceTypes, h);
        }