You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Appsettings配置节绑定到Dictionary<int,int>并通过Configure方法注册

解决方案

首先明确:标准JSON规范要求对象的键必须是字符串类型,你原有配置中直接写1: 14的写法不符合JSON规范,会直接导致配置读取失败,调整方式非常简单:

  1. 修正appsettings.json配置为合法格式,仅需给键加双引号即可,无需修改其他结构:
"ProductSettings": {
  "ProductValues": {      
    "1": 14,
    "2": 30
  }
}
  1. 你已定义的ProductSettings类不需要做任何修改,保留Dictionary<int, int>类型的ProductValues属性即可:
public class ProductSettings
{
     public Dictionary<int, int> ProductValues{ get; set; }         
}
  1. 服务注册代码完全沿用你原来的写法即可:
services.Configure<ProductSettings>(configuration.GetSection("ProductSettings"));

原理说明

.NET配置系统的绑定器自带类型转换能力,在绑定到泛型字典时,会自动将JSON中读取到的字符串键,转换为你定义的字典键的目标类型(这里就是int),只要配置中键的字符串内容符合int格式,就能绑定成功。最终你通过IOptions<ProductSettings>注入拿到的配置实例中,ProductValues的键就是int类型,直接按int索引取值即可:

// 注入示例
public class DemoService
{
    private readonly ProductSettings _settings;
    public DemoService(IOptions<ProductSettings> options)
    {
        _settings = options.Value;
        // 直接用int作为键取值,返回14
        var val1 = _settings.ProductValues[1];
    }
}

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:45:04