C# 将appsettings.json数组节绑定到具有泛型列表属性的泛型类
我必须使用C# 将appsettings.json数组节绑定到具有泛型列表属性的泛型类,c#,asp.net,.net,C#,Asp.net,.net,我必须使用IOptionsSnapshot从appsettings.json读取一些值,并通过API端点返回它们 "adConfig": [ { "id": 3, "adDef": [ { "type": "number", "key": "somekey", "displayName": "Rules", "values": [ 0, 1 ], "regex": null
IOptionsSnapshot
从appsettings.json读取一些值,并通过API端点返回它们
"adConfig": [
{
"id": 3,
"adDef": [
{
"type": "number",
"key": "somekey",
"displayName": "Rules",
"values": [
0,
1
],
"regex": null
},
{
"type": "select",
"key": "anotherkey",
"displayName": "Some state",
"values": [
"some string value",
"another string value"
],
"regex": null
}
]
},
{
"id": 1
....
}
]
为此,我创建了两个类用于绑定设置
public class AdDataModel<T>
{
public string type { get; set; }
public string key{ get; set; }
public string displayName { get; set; }
public List<T> Values { get; set; }
public string regex { get; set; }
}
public class AdConfigurationModel
{
public int Id{ get; set; }
public List<AdDataModel<dynamic>> AdDefinition { get; set; }
}
公共类AdDataModel
{
公共字符串类型{get;set;}
公共字符串密钥{get;set;}
公共字符串displayName{get;set;}
公共列表值{get;set;}
公共字符串正则表达式{get;set;}
}
公共类配置模型
{
公共int Id{get;set;}
公共列表加法定义{get;set;}
}
在Startup.cs中,我使用以下代码将设置绑定到类:
services.Configure<List<AdConfigurationModel>>(Configuration.GetSection("adConfig"));
services.Configure(Configuration.GetSection(“adConfig”);
到目前为止还不错。我将其注入控制器类,但问题是AdDataModel.Values
总是属于object
类型(这不是adDef:Values
小节的第一个元素的情况)。是否有任何方法可以根据appsettings.json中的值获取类型int
或string
中的值?
谢谢 如果我在adDef:values的第二小节中使用int,我将丢失字符串值问题是(对于标量类型)
Configuration
只返回随后转换为其他类型的字符串,但由于您的集合是List
(就类型而言,它相当于List
),因此它认为不需要进一步转换,因此您总是会得到字符串。如果您不想重新执行所有配置管道,那么没有简单的方法可以解决这个问题。确定值类型的是客户机,而不是配置本身。