选项模式将选项注入服务
使用 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
类的默认实例。