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-显示结果为