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