选项模式将选项注入服务

使用 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 类的默认实例。