如何从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
相关产品推荐
相关产品推荐

