91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET Core配置選項的執行順序是什么

發布時間:2021-12-06 11:50:38 來源:億速云 閱讀:582 作者:iii 欄目:大數據

這篇文章主要介紹“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配置選項的執行順序是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石嘴山市| 阳新县| 金堂县| 台北市| 克东县| 秦安县| 太白县| 郓城县| 岢岚县| 台南市| 林口县| 卢湾区| 通山县| 惠水县| 武川县| 兴国县| 元阳县| 迁西县| 额尔古纳市| 东光县| 竹山县| 休宁县| 崇仁县| 阿城市| 长子县| 千阳县| 常德市| 新乡县| 武安市| 新龙县| 郯城县| 乌鲁木齐市| 来安县| 凤翔县| 商丘市| 临汾市| 枝江市| 墨竹工卡县| 百色市| 秦安县| 周宁县|