public void Apply(RouteGraph graph, GenerationRules rules) { graph .Where(x => x.Action.HandlerType.CanBeCastTo <ControllerBase>()) .Each(x => { x.Middleware.Add(new BuildOutControllerContextFrame()); x.Middleware.Add(new SetControllerContextFrame(x.Action.HandlerType)); }); }
public FindRouteFrame(MethodRoutes routes, RouteGraph graph) { _routes = routes; graph .Where(x => x.RespondsToMethod(routes.HttpMethod)) .Select(x => new Setter(typeof(RouteHandler), x.Route.VariableName) { InitialValue = x.Route.Handler }) .Each(x => uses.Add(x)); }
public void AssemblySelector(GeneratedAssembly assembly, RouteGraph routes) { _generatedType = assembly.AddType(HttpMethod + "Router", typeof(RouteSelector)); foreach (var route in routes.Where(x => x.RespondsToMethod(HttpMethod))) { route.WriteRouteMatchMethod(_generatedType); } var method = _generatedType.MethodFor(nameof(RouteSelector.Select)); method.Frames.Add(new FindRouteFrame(this, routes)); }
public RouteSelector BuildSelector(IContainer container, RouteGraph routes) { var code = _generatedType.SourceCode; var selectorType = _generatedType.CompiledType; var selector = (RouteSelector)Activator.CreateInstance(selectorType); foreach (var route in routes.Where(x => x.RespondsToMethod(HttpMethod))) { var handler = route.CreateHandler(container); var setter = selectorType.GetProperty(route.Route.VariableName); setter?.SetValue(selector, handler); } return(selector); }