跳過到頁腳內容
Iron Academy Logo
學習 C#
學習 C#

其他分類

理解 C# 設置標誌枚舉:指派標誌

Tim Corey
10m 39s

配置管理是建立可擴展且可維護的C#應用程式的基本方面。 處理配置設置的最有效方法之一是使用選項模式。 在他的视频中,在10分鐘內或更短時間內在C#中選項模式,Tim Corey提供了對這種模式的簡明但深刻的解釋,以及如何有效地實施它。 在本文中,我們將通過Tim的解釋和他的視頻中的演示來探索選項模式。

介紹

Tim介紹選項模式為從配置文件中檢索信息並將其注入依賴注入(DI)的一種既強大又簡單的方法。 他強調了這種模式的幾個優勢,例如:

  • 管理運行時值更改的能力。
  • 內建的數據驗證支持。
  • 與各種C#項目類型的兼容性,包括Blazor應用程式。

Tim強調,雖然他通常提供深入的技術培訓,但該視頻被設計為實施選項模式的快速入門指南

設置專案

Tim首先打開以Blazor Web App(僅服務器端渲染)的形式運行的Visual Studio。 他已經進行了一些修改以加快演示速度。 關鍵設置涉及:

  • 創建一個包含三對鍵值的CloudInfo部分的appsettings.json文件。
  • 使用稱為CloudInfoOptions普通CLR對象(POCO)模型,其映射到這些配置值。

配置文件

appsettings.json文件包含以下部分:

{
  "CloudInfo": {
    "Storage": "Azure Storage",
    "Website": "Azure Static Web Apps",
    "API": "Azure Web App"
  }
}

Tim澄清說,雖然他正在使用appsettings.json,但配置值也可以來自:

  • appsettings.Development.json
  • secrets.json
  • 環境變量

將配置綁定到選項上

現在,Tim解釋了如何將配置值綁定CloudInfoOptions類並將其注入DI。

在Program.cs中註冊選項

builder.Services內添加了以下行:

builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));
builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));

這將CloudInfoOptions類。 Tim指出,此步驟確保值在依賴注入中可用。

在Razor組件中注入選項

Tim進入首頁組件(Index.razor)並對其進行修改,以動態顯示配置值。

他將IOptions接口注入組件中:

@inject IOptions<CloudInfoOptions> CloudInfoOptions

為了檢索實際值,他將其分配在OnInitialized內:

protected override void OnInitialized()
{
    CloudInfo = CloudInfoOptions.Value;
}
protected override void OnInitialized()
{
    CloudInfo = CloudInfoOptions.Value;
}

Tim解釋說,IOptions<t>提供了單例實例的配置值,這意味著它在應用程式的生命周期內保持不變。 當應用程式運行時,配置值正確地顯示在頁面上。

探索不同的選項接口

然後,Tim介紹了使用選項模式的三種不同方式:

1. 單例選項

默認情況下,IOptions<t>提供了單例實例。 Tim演示了如果應用程式運行時更新了配置文件,則除非重啟應用程式,否則更改不會反映出來。

2. 作用域選項 - 使用IOptionsSnapshot<t>

為了啟用每次請求更新,Tim修改了注入以:

@inject IOptionsSnapshot<CloudInfoOptions> CloudInfoOptions

這確保了每個新的HTTP請求都能獲得新的配置值。 Tim通過修改appsettings.json並刷新頁面進行測試,顯示更新後的值立即出現。

他解釋說,IOptionsSnapshot<t>對於需要在不重新啟動應用程式的情況下反映變更的場景很有用,但不需要實時監控。

3. 監控變更 - 使用IOptionsMonitor<t>

最後,Tim介紹了IOptionsMonitor<t>,這使得實時更改偵測成為可能。 他將注入更新為:

@inject IOptionsMonitor<CloudInfoOptions> CloudInfoOptions

不同於IOptionsMonitor<t>可以在配置值更改時觸發事件。 這在需要動態響應配置變更時特別有用。

Tim指出,IOptionsMonitor<t>由單例<強烈>推出烈>,但在底層配置文件更改時可以動態刷新值。

結論

Tim通過總結視頻結束了演講,說明了三種方法之間的主要區別:

接口 生命周期 更新變更時
IOptions<t> 單例
IOptionsSnapshot<t> 作用域 每次請求
IOptionsMonitor<t> 單例

他強調,雖然選項模式簡化了配置管理,但了解這些不同的變體有助於根據项目需求选择合适的方法。

按照Tim的方法,開發者可以有效管理應用程式設置,確保平順的依賴注入,有效應對運行時配置更改。 為了更好的理解,請觀看完整的視頻,並造訪他的頻道了解更多關於C#的有見地的視頻。

Hero Worlddot related to 理解 C# 設置標誌枚舉:指派標誌
Hero Affiliate related to 理解 C# 設置標誌枚舉:指派標誌

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我