您好,登錄后才能下訂單哦!
這篇文章主要介紹“ASP.NET Core配置選項的執行順序是什么”,在日常操作中,相信很多人在ASP.NET Core配置選項的執行順序是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET Core配置選項的執行順序是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
public class MyOptions { public string Version { get; set; } = "v1"; } public class MyOptionsSetup : IConfigureOptions<MyOptions>, IPostConfigureOptions<MyOptions> { public void Configure(MyOptions options) { options.Version = "Configure"; } public void PostConfigure(string name, MyOptions options) { options.Version = "PostConfigure"; } }
// StartUp.css public class StartUp { public void ConfigureServices(IServiceCollection services) { // 注冊 services.TryAddTransient<IConfigureOptions<MyOptions>, MyOptionsSetup>(); services.TryAddTransient<IPostConfigureOptions<MyOptions>, MyOptionsSetup>(); var options = new MyOptions(); // 默認 options.Version = "v1" var serviceProvider = services.BuildServiceProvider(); // 讀取 IConfigureOptions<MyOptions> 實例,并調用 Configure() var configureOptions = serviceProvider.GetService<IConfigureOptions<MyOptions>>(); configureOptions.Configure(options); // 此時 options.Version = "Configure-v1" // 不會執行任何操作,僅僅是添加了一個用于配置的委托 services.Configure( options=> options.Version = "v2" ); // 此時 options.Version = "v2" // 【注意】如果在 service.Configure() 之后調用 IConfigureOptions.Configure(), // 將只會執行 options=> options.Version = "v2", // 不會執行 IConfigureOptions.Configure() !!! var configureOptions2 = serviceProvider.GetService<IConfigureOptions<MyOptions>>(); configureOptions2.Configure(options); // 此時 options.Version = "v2",而不是 "Configure-v1" // 讀取 IPostConfigureOptions<MyOptions> 實例,并調用 PostConfigure() var postConfigureOptions = serviceProvider.GetService<IPostConfigureOptions<MyOptions>>(); postConfigureOptions.PostConfigure(options); // 此時 options.Version = "PostConfigure-v1" } }
配置的執行順序:
1. new Options() 默認值 2. IConfigureOptions<Options>.Configure( options ) 【前提是必須在 service.Configure 前調用,需要人為調用】 3. service.Configure() 4. IPostConfigureOptions<Options>( options ) 需要人為調用
總之:
只要調用了 services.Configure
, 那么再調用 IConfigureOptions.Configure
就無效了,都是執行 services.Configure
提供的委托或者配置
而 IPostConfigureOptions.Configure
在前在后,只要調用,都可以被觸發
如果直接獲取 IOptions<MyOptions>
,不會執行 serviceConfigure<TOptions>( setupAction )
提供的委托 setupAction
,會先 new Options()
,然后執行 IConfigureConfigure()
,最后執行 IPostConfigureOptions.Configure()
,且僅在首次獲取IOptions<MyOptions>
服務實例的時候觸發。
IOptions<TOptions>
會實時更新它的 Value屬性,即 MyOptions 實例,
IOptionsSnapshot<TOptions>
不會實時更新,因為它只是一個快照
到此,關于“ASP.NET Core配置選項的執行順序是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。