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

如何从appSettings.json读取特定数据结构?C#适配结构求助

读取appSettings.json中Ranges结构的C#数据结构方案

要正确读取你appSettings.json中的Ranges数组,不能用具名元组——因为.NET配置绑定系统依赖可实例化、带无参构造函数且有可写属性的类型。正确做法是定义对应的实体类/结构体,再结合集合类型使用:

1. 定义单个Range的实体类型

创建一个类(或结构体)对应配置中单个Range的结构:

// 类版本(推荐,适合后续扩展)
public class RangeItem
{
    public int K { get; set; }
    public int Min { get; set; }
    public int Max { get; set; }
}

// 或者结构体版本(如果不需要引用类型特性)
public struct RangeItem
{
    public int K { get; set; }
    public int Min { get; set; }
    public int Max { get; set; }
}

2. 修改RangeOptions类

将List的泛型类型替换为上面定义的RangeItem:

public class RangeOptions
{
    // 初始化集合避免空引用异常
    public List<RangeItem> Ranges { get; set; } = new List<RangeItem>();
}

3. 配置绑定示例

在.NET应用中,你可以这样从appSettings.json绑定数据:

// 构建配置对象
var configuration = new ConfigurationBuilder()
    .AddJsonFile("appSettings.json", optional: false, reloadOnChange: true)
    .Build();

// 方式1:直接绑定到List<RangeItem>
var ranges = configuration.GetSection("Ranges").Get<List<RangeItem>>();

// 方式2:绑定到整个RangeOptions类
var options = new RangeOptions();
configuration.Bind(options);
// 此时options.Ranges即可获取配置中的所有Range数据

为什么元组无法使用?

具名元组没有无参构造函数,且配置绑定系统需要通过属性setter赋值,而元组的属性本质是只读的元素,不符合配置绑定的要求,因此无法自动映射配置数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:50:27