29-自己动手构建RequestDelegate管道

Posted 深圳丶追

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-显示结果为

 

以上是关于29-自己动手构建RequestDelegate管道的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core快速入门Middleware管道介绍自己动手构建RequestDelegate管道

自己动手编写 Dockerfile 构建自定义的Jenkins

亲自己主动手从源代码 构建 Groovy 2.3.8 公布包

ASP.NET Core 3.1--中间件源码解读--RequestDelegate--ApplicationBuilder.Use

《自己动手写Docker》pdf

自己动手写编译器:通过语法编译构建语法树并实现中间代码生成