Exemple #1
0
 private IEnumerable <Func <object, Func <Task>, Task> > CreateMiddlewareExecutors(IServiceProvider services, Type messageType)
 {
     foreach (var middlewareType in _middlewareTypes)
     {
         var middleware = services.GetService(middlewareType);
         var executor   = PipelineExpressionFactory.GetMiddlewareExecutor(middleware, messageType);
         yield return(async(context, next) => await executor(context, next));
     }
 }
Exemple #2
0
        public async Task Execute(Type messageType, object message, IServiceProvider services, Func <object, Task> last)
        {
            var ctx = PipelineExpressionFactory.GetMessagecontextConstructor(messageType)(message, services);
            Func <object, Task> source = last;

            var middlewareExecutors = CreateMiddlewareExecutors(services, messageType);

            foreach (var middlewareExecutor in middlewareExecutors)
            {
                source = CreatePipelineLevelExecutor(source, middlewareExecutor);
            }
            await source(ctx);
        }