示例#1
0
        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);
        }