选项模式将选项注入服务
使用 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 类中初始化它。有两种方法可以做到这一点
-
直接从
appsettings.json``mysettings部分加载它services.Configure<MySettings>(Configuration.GetSection("mysettings")); -
手动完成
services.Configure<MySettings>(new MySettings { Value1 = "Hello", Value2 = Configuration["mysettings:value2"] });appsettings.json的每个层次级别由:分隔。由于value2是mysettings对象的属性,我们通过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 类的默认实例。