自定义 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
      });
原文地址:https://www.cnblogs.com/jasontarry/p/15376786.html