private ActionMethod AddActionMethod(Controller controller, Type controllerType, string ActionName, string methodName, MethodInfo methodInfo) { ActionMethod method = controller.ActionMethods.FirstOrDefault(am => am.ActionName == ActionName); if (method.IsNull()) { method = method.IfNullDefault <ActionMethod>(() => { return(new ActionMethod() { ActionName = ActionName, MethodName = methodName, MethodInfo = methodInfo, Method = new Method() { MethodTriger = LambdaTools.MethodTriger(controllerType, methodInfo) } }); }); methodInfo.GetParameters().ToList().ForEach((p) => { method.Method.Parameters.Add(new Parameter() { ParameterName = p.Name.ToUpper(), ParameterType = p.ParameterType }); }); controller.ActionMethods.Add(method); } else { throw new ControllerRegistrationException("Action[" + ActionName + "] is declared at least twice"); } return(method); }