private async Task ExecuteMiddlewarePipeline(UnitOfWork unitOfWork, IServiceProvider uowScope, int middlewareIndex = 0)
        {
            if (middlewareIndex >= this.application.Middlewares.Count)
            {
                await this.Execute(unitOfWork, uowScope);
            }
            else
            {
                UOWApplication.MiddlewareCallback mw = this.application.Middlewares.ElementAt(middlewareIndex);

                await mw.Invoke(new UOWExecutionContext { Services = uowScope, UnitOfWork = unitOfWork }, async() =>
                {
                    await this.ExecuteMiddlewarePipeline(unitOfWork, uowScope, middlewareIndex + 1);
                });
            }
        }
Exemple #2
0
        public UOWApplication Use(UOWApplication.MiddlewareCallback middleware)
        {
            this.Middlewares.Add(middleware);

            return(this);
        }