示例#1
0
        public static void WriteControllerActions(IndentedTextWriter writer, ControllerDescriptor controller)
        {
            CodeGenerator.WriteHelperClassStart(writer, $"{controller.Name}ControllerActions", controller.Name);

            foreach (var action in controller.Actions)
            {
                WriteAction(writer, action);
            }

            CodeGenerator.WriteHelperClassEnd(writer);
        }
示例#2
0
        public static ControllerDescriptor DiscoverControllerActions(INamedTypeSymbol controllerSymbol, AreaDescriptor area, IMethodSymbol disposableDispose)
        {
            var controllerName = RouteDiscoverer.DiscoverControllerName(controllerSymbol);
            var controller     = new ControllerDescriptor(area, controllerName);

            foreach (var actionSymbol in DiscoverActions(controllerSymbol, disposableDispose))
            {
                var actionName = RouteDiscoverer.DiscoverActionName(actionSymbol);
                var action     = new ActionDescriptor(controller, actionName);

                foreach (var parameter in RouteDiscoverer.DiscoverMethodParameters(actionSymbol))
                {
                    action.Parameters.Add(parameter);
                }

                controller.Actions.Add(action);
            }

            return(controller);
        }
        public static void WriteControllerActions(IndentedTextWriter writer, ControllerDescriptor controller)
        {
            writer.WriteLine($"public {controller.Name}ControllerActions {controller.Name}");
            writer.Indent++;
            writer.WriteLine($"=> new {controller.Name}ControllerActions(urlHelper);");
            writer.Indent--;
            writer.WriteLineNoTabs("");

            writer.WriteLine($"public class {controller.Name}ControllerActions");
            writer.WriteLine("{");
            writer.Indent++;

            writer.WriteLine("private readonly IUrlHelper urlHelper;");
            writer.WriteLine($"public {controller.Name}ControllerActions(IUrlHelper urlHelper)");
            writer.WriteLine("{");
            writer.Indent++;
            writer.WriteLine("this.urlHelper = urlHelper;");
            writer.Indent--;
            writer.WriteLine("}");
            writer.WriteLineNoTabs("");

            var first = true;

            foreach (var action in controller.Actions)
            {
                if (!first)
                {
                    writer.WriteLineNoTabs("");
                }
                first = false;

                WriteAction(writer, action);
            }

            writer.Indent--;
            writer.WriteLine("}");
        }
        public static ControllerDescriptor DiscoverControllerActions(ITypeSymbol controllerSymbol, AreaDescriptor area)
        {
            var controllerName = Regex.Replace(controllerSymbol.Name, "Controller$", "");
            var controller     = new ControllerDescriptor(area, controllerName);

            foreach (var actionSymbol in DiscoverActions(controllerSymbol))
            {
                var actionName = Regex.Replace(actionSymbol.Name, "Async$", "");
                var action     = new ActionDescriptor(controller, actionName);

                foreach (var parameterSymbol in actionSymbol.Parameters)
                {
                    action.Parameters.Add(new ParameterDescriptor(
                                              parameterSymbol.Name,
                                              GetParameterType(parameterSymbol.Type),
                                              parameterSymbol.HasExplicitDefaultValue,
                                              parameterSymbol.HasExplicitDefaultValue ? parameterSymbol.ExplicitDefaultValue : null));
                }

                controller.Actions.Add(action);
            }

            return(controller);
        }
 public ActionDescriptor(ControllerDescriptor controller, string actionName)
 {
     Controller = controller;
     Name       = actionName;
     Parameters = new List <ParameterDescriptor>();
 }