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

如何将Dictionary<string, string>反序列化为AppSettings对象?

解决方案

要实现将Dictionary<string, string>反序列化为AppSettings对象,你可以直接使用ASP.NET 6内置的配置绑定功能,无需手动处理TypeConverter。具体步骤如下:

1. 安装必要的NuGet包

确保项目引用了以下包:

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Binder

2. 调整实体类(适配只读属性的构造函数绑定)

由于你的类属性是只读的(仅包含get访问器),需要为每个类添加与属性匹配的构造函数,配置绑定系统会通过构造函数注入完成赋值:

public class AppSettings {
    public int? S { get; }
    public double? SS { get; }
    public string? SSS { get; }
    public bool? SSSS { get; }
    public G? G { get; }

    // 构造函数参数名需与配置键对应(大小写默认不敏感,建议保持一致)
    public AppSettings(int? s, double? ss, string? sss, bool? ssss, G? g) {
        S = s;
        SS = ss;
        SSS = sss;
        SSSS = ssss;
        G = g;
    }
}

public class G {
    public int[] GG { get; }

    public G(int[] gg) {
        GG = gg;
    }
}

3. 执行绑定操作

将字典转换为IConfiguration实例,然后通过Get<T>方法完成绑定:

// 你的源字典
var configDict = new Dictionary<string, string> {
    {"S", "5"},
    {"SS", "5.2"},
    {"SSS", "string"},
    {"SSSS", "true"},
    {"G:GG", "[1, 2, 3]"}
};

// 将字典转换为IConfiguration
var configuration = new ConfigurationBuilder()
    .AddInMemoryCollection(configDict)
    .Build();

// 绑定到AppSettings对象
var appSettings = configuration.Get<AppSettings>();

关键说明

  • 配置键的冒号:用于表示嵌套对象层级,比如G:GG对应AppSettings.G.GG。
  • 绑定系统自动处理类型转换:包括数值、布尔值、JSON格式的数组(如[1,2,3]转int[])。
  • 如果你的属性包含set访问器,无需添加构造函数,直接调用configuration.Bind(appSettingsInstance)即可完成赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:46:10