Exemple #1
0
        /// <summary>
        /// 通过构造器,直接获取相关构造委托
        /// </summary>
        /// <param name="constructor">构造器</param>
        /// <returns>构造委托</returns>
        public static NewClass <T> GetClass(ConstructorInfo constructor)
        {
            if (constructor == null)
            {
                throw new ArgumentNullException(nameof(constructor), "参数为空!");
            }

            var as0 = System.Linq.Expressions.Expression.Parameter(typeof(object[]), "parameters");

            if (!ActionDispatcher <object> .GetParameter(out List <System.Linq.Expressions.Expression> expressions, as0, constructor.GetParameters()))
            {
                throw new ArgumentNullException(nameof(constructor), "无法创建该对象构造,构造参数存在未知问题,请将相关问题,上报给作者!");
            }

            var as1 = System.Linq.Expressions.Expression.New(constructor, expressions);

            //System.Linq.Expressions.MethodCallExpression methodCall = System.Linq.Expressions.Expression.Call(as1, null, expressions);//(MethodInfo)(MethodBase)constructorInfos[0]

            var as2 = System.Linq.Expressions.Expression.Lambda <NewClass <T> >(as1, as0);

            return(as2.Compile());
        }
Exemple #2
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="methodInfo">方法</param>
        /// <param name="ClassType">类的<see cref="Type"/></param>
        public ActionMethod(MethodInfo methodInfo, Type ClassType)
        {
            this.ClassType = ClassType;

            _action = new ActionDispatcher <T>(methodInfo);
        }
Exemple #3
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="methodInfo">方法</param>
        public ActionMethod(MethodInfo methodInfo)
        {
            ClassType = typeof(T);

            _action = new ActionDispatcher <T>(methodInfo);
        }