我们在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 });