Exemple #1
0
        public IMiddlewarePipeline Build()
        {
            var         middleware = new List <IMiddleware>();
            IMiddleware previous   = null;

            foreach (var registration in _registrations.ToArray())
            {
                var current = registration.Activator();

                middleware.Add(current);

                if (previous != null)
                {
                    previous.SetNext(current.Invoke);
                }

                previous = current;
            }

            var pipelineTermination = new PipelineTerminationMiddleware();

            middleware.Add(pipelineTermination);

            if (previous != null)
            {
                previous.SetNext(pipelineTermination.Invoke);
            }

            return(new MiddlewarePipeline(middleware.First()));
        }