跳至頁尾內容
Iron Academy Logo
學習C#
學習C#

其他類別

理解C#設置旗標枚舉:分配旗標

Tim Corey
10m 39s

配置管理是建構可擴展且可維護的C#應用程式的一個重要方面。 處理配置設置的最有效方法之一是使用選項模式。 在他的视频中,The Options Pattern in C# in 10 Minutes or Less,Tim Corey 提供了一個簡明而富有見解的解釋,說明如何高效地實現這種模式。 在這篇文章中,我們將通過 Tim 的影片中的解釋和演示來探討選項模式。

介紹

Tim 首先介紹 選項模式是一種強大且簡單的方法,用於從配置文件中檢索資訊並將其注入依賴注入 (DI)。 他突顯了這種模式的幾個優點,例如:

  • 管理運行時值變更的能力。
  • 內建的資料驗證支持。
  • 與各種C#專案型別的相容性,包括Blazor應用程式。

Tim 強調,雖然他通常提供深入的技術訓練,但這個影片旨在作為實現選項模式的快速入門指南

專案設置

Tim 從打開Visual Studio與一個 Blazor Web 應用(僅伺服器端渲染)開始。 他已經做了一些修改,以加快演示速度。 關鍵設置包括:

  • 建立一個包含三個鍵值對的 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 中註冊選項

Program.cs中,Tim 在builder.Services內新增了以下一行:

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

這將 appsettings.json 的 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 的開發者建立內容?將您的專業知識轉化為額外收入!

Iron 支援團隊

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