選項模式將選項注入服務

使用 ASP.NET Core,Microsoft 團隊還引入了 Options 模式,該模式允許具有強型別選項,並且一旦配置了將選項注入服務的能力。

首先,我們從強型別類開始,它將保留我們的配置。

public class MySettings 
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

並且在 appsettings.json 中有一個條目。

{
  "mysettings" : {
    "value1": "Hello",
    "value2": "World"
  }
}

接下來,我們在 Startup 類中初始化它。有兩種方法可以做到這一點

  1. 直接從 appsettings.json``mysettings 部分載入它

    services.Configure<MySettings>(Configuration.GetSection("mysettings"));
    
  2. 手動完成

    services.Configure<MySettings>(new MySettings 
    {
        Value1 = "Hello",
        Value2 = Configuration["mysettings:value2"]
    });
    

    appsettings.json 的每個層次級別由:分隔。由於 value2mysettings 物件的屬性,我們通過 mysettings:value2 訪問它。

最後,我們可以使用 IOptions<T> 介面將選項注入我們的服務

public class MyService : IMyService
{
    private readonly MySettings settings;

    public MyService(IOptions<MySettings> mysettings) 
    {
        this.settings = mySettings.Value;
    }
}

備註

如果在啟動期間未配置 IOptions<T>,則注入 IOptions<T> 將注入 T 類的預設例項。