如何将appsettings中Needed节点绑定到NeededSettings类实现单一行Options配置注入
解决方案
第一步:定义NeededSettings类
你只需要在NeededSettings类中定义和Needed节点下子键同名的公共属性,类型直接复用你已经写好的DatabaseSettings和IntervalSettings即可,示例代码如下:
public class NeededSettings { // 属性名和JSON中Needed下的子键名完全对应 public DatabaseSettings Database { get; set; } public IntervalSettings Interval { get; set; } }
注意:属性必须声明为公共可读写(public get;set;),否则配置系统无法完成自动绑定。
第二步:单一行代码完成Options注入
直接绑定整个Needed配置段即可,替换你之前的两行注入代码为下面这行:
services.Configure<NeededSettings>(Configuration.GetSection("Needed"));
第三步:使用配置
后续需要使用配置的地方,直接在构造函数中注入IOptions<NeededSettings>即可读取所有配置:
public class YourService { private readonly NeededSettings _settings; public YourService(IOptions<NeededSettings> settings) { _settings = settings.Value; } public void Test() { // 读取数据库连接字符串 var connStr = _settings.Database.ConnectionString; // 读取间隔配置 var isActive = _settings.Interval.is_active; var seconds = _settings.Interval.in_seconds; } }
额外提示:你给出的appsettings.json示例中
Interval段的赋值符号有误,JSON规范中需用冒号:而非等号=,实际使用时请修正为正确格式,否则会读取配置失败。
内容的提问来源于stack exchange,提问作者schweppes0x
相关产品推荐
相关产品推荐

