绑定来自 appsettings.json 的字符串列表

Bind list of string from appsettings.json

我的 appSettings 中定义了以下字符串列表

 "AllowedGroups": [ "support", "admin", "dev" ] 

我想在启动时将它绑定到 class 以进行依赖注入。

这是我的模型class

  public class AllowedGroups
    {
        public List<string> Groups { get; set; }
    }

这就是我尝试绑定它的方式。

   services.Configure<AllowedGroups>(Configuration.GetSection("AllowedGroups"));

我想以这种格式保留 appsettings 文件,但我不知道应该如何相应地定义模型 class 以及如何绑定它。 我知道他可能希望 "AllowedGroups":{Groups: [ "support", "admin", "dev" ]} 使用当前模型

你可以这样做:

_config.GetConfigSection("AllowedGroups").GetChildren().ToList();

_config 派生自 IConfiguration。

如果你想保留配置结构,你可以“原始”解析所有内容:

var allowedGroups = Configuration.GetSection("AllowedGroups").Get<List<string>>();
services.AddSingleton(new AllowedGroups {Groups = allowedGroups});

请注意,这只会注册 AllowedGroups 而不是 options as Configure does. TO register options you can use next overload of Configure:

services.Configure<AllowedGroups>(allowedGroups =>
    allowedGroups.Groups = Configuration.GetSection("AllowedGroups").Get<List<string>>());