29-自己动手构建RequestDelegate管道

1-使用vsCode新建个项目

 

2-新建RequestDelegate和Context

    public delegate Task RequestDelegate(Context context);

      public class Context{
        
     }

 

3-Proggram.cs类

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MypipleLine
{
    class Program
    {
        private static List<Func<RequestDelegate,RequestDelegate>> _list = 
        new List<Func<RequestDelegate, RequestDelegate>>();
        static void Main(string[] args)
        {
              Use((next)=>{
                return (context)=>{
                    Console.WriteLine("1111111111");
                    return next.Invoke(context);
                };
            });
            Use((next)=>{
                return (context)=>{
                    Console.WriteLine("222222222");
                    return next.Invoke(context);
                };
            });

            RequestDelegate end = context=>{
                Console.WriteLine("end");
                return Task.CompletedTask;
            };
            
            _list.Reverse();
            foreach(var middleware in _list)
            {
                end = middleware.Invoke(end);
            }

           end.Invoke(new Context());
        }


        static void Use(Func<RequestDelegate,RequestDelegate> middleware){
            _list.Add(middleware);
        }

    }
}

4-显示结果为

 

posted @ 2018-07-21 11:40  深圳丶追  阅读(118)  评论(0编辑  收藏  举报