自定义 ADD+Option+UseMiddleware 套装中间件

 我们在net core 中经常看到这样的写法  在ConfigureServices 里面注册一个 services.AddSession(); 然后在Configure   app.UseSession(); 

本质上 Add 集中注册 就是在ioc 注册对应服务关系

option 用来传值  option 有2个来源  一个可以use 直接传递,另一个是ioc 注入   利用add service.configure(option)

UseMiddleware 使用管道处理流程

 记录一下。。。主要过程

add 方式 

        /// <summary>
        /// 直接用Option的模式去初始化
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configure"></param>
        /// <returns></returns>
        public static IServiceCollection AddextFilter(this IServiceCollection services, Action<FilterOptions> configure)
        {
            services.Configure(configure);//这个是查看前面的option 模式注入 利用这个options 传递对象,在访问Value属性时这行委托
            return services.AddextendFilter();
        }

 

直接传值

 

        public static IApplicationBuilder UseBrowserFilter(this IApplicationBuilder app, BrowserFilterOptions options)
        {
          
            return app.UseMiddleware<BrowserFilterMiddleware>(Options.Create(options));

//IOptions<TOptions>---OptionsWrapper----直接写入对象,直接覆盖数据-----上面那个,则是不管,以Add为准(IOption则是IOC注入的) }

调用  

 

        public static IApplicationBuilder UseBrowserFilter(this IApplicationBuilder app)
        {
            if (app == null)
            {
                throw new ArgumentNullException(nameof(app));
            }
           

            return app.UseMiddleware<BrowserFilterMiddleware>();
           
        }

 

   app.UseBrowserFilter(new BrowserFilterOptions()
      {
              EnableIE = true,
             EnableFirefox = false
      });

 

posted @ 2021-10-07 19:30  非著名架构师  阅读(57)  评论(0编辑  收藏  举报