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); }
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>(); }