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
),因此它认为不需要进一步转换,因此您总是会得到字符串。如果您不想重新执行所有配置管道,那么没有简单的方法可以解决这个问题。确定值类型的是客户机,而不是配置本身。