internal static DirectiveMiddleware Create <TMiddleware>()
            where TMiddleware : class
        {
            return(next =>
            {
                MiddlewareFactory <TMiddleware, IServiceProvider, FieldDelegate> factory =
                    MiddlewareCompiler <TMiddleware>
                    .CompileFactory <IServiceProvider, FieldDelegate>(
                        (services, next) =>
                        new IParameterHandler[] { new ServiceParameterHandler(services) });

                return CreateDelegate(
                    (s, n) => factory(s, n),
                    next);
            });
        }
Example #2
0
        internal static RequestCoreMiddleware Create <TMiddleware>()
            where TMiddleware : class
        {
            return((context, next) =>
            {
                TMiddleware middleware =
                    MiddlewareCompiler <TMiddleware>
                    .CompileFactory <IRequestCoreMiddlewareContext, RequestDelegate>(
                        (c, n) => CreateFactoryParameterHandlers(c, context.Options))
                    .Invoke(context, next);

                ClassQueryDelegate <TMiddleware, IRequestContext> compiled =
                    MiddlewareCompiler <TMiddleware> .CompileDelegate <IRequestContext>(
                        (c, m) => CreateDelegateParameterHandlers(c, context.Options));

                return c => compiled(c, middleware);
            });
        }