首页 > 解决方案 > 将 appsettings.json 数组部分绑定到具有泛型列表属性的泛型类

问题描述

我必须使用从 appsettings.json 读取一些值IOptionsSnapshot并通过 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
....
}
]

为此,我创建了 2 个用于绑定设置的类。

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; }
}

在 Startup.cs 中,我使用此代码将设置绑定到类:

services.Configure<List<AdConfigurationModel>>(Configuration.GetSection("adConfig"));

到目前为止,一切都很好。我将它注入到 Controller 类中,但问题是AdDataModel.Values类型object<string>不同(小节的第一个元素不是这种情况adDef:Values)。有什么方法可以实现来自类型intstring基于 appsettings.json 中的值的值?

谢谢!

标签: c#asp.net.net

解决方案


推荐阅读