/// <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()); }
/// <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); }
/// <summary> /// 初始化 /// </summary> /// <param name="methodInfo">方法</param> public ActionMethod(MethodInfo methodInfo) { ClassType = typeof(T); _action = new ActionDispatcher <T>(methodInfo); }