Пример #1
0
 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));
     });
 }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }