在类中初始化时未从设置中加载集合
Posted
技术标签:
【中文标题】在类中初始化时未从设置中加载集合【英文标题】:Collection not loaded from settings when is initialised in class 【发布时间】:2022-01-23 03:38:52 【问题描述】:使用 Net 6 我有以下 Program.cs 配置:
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Configuration
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", false, true)
.AddJsonFile($"settings.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT").json", false, true)
.AddEnvironmentVariables();
builder.Services.Configure<Options>(builder.Configuration);
Options 类是:
public partial class Options
public IEnumerable<Application> Applications get; set; = new List<Application>();
在我拥有的最小 Api 端点上:
builder.MapPost("posts", async ([FromServices] IOptionsMonitor<Options> options, ...) =>
var value = options.CurrentValue;
var applications = value.Applications;
);
在这种情况下,applications
是一个空集合。
如果我不初始化 Options
类中的 Applications
属性,例如:
public partial class Options
public IEnumerable<Application> Applications get; set; = new List<Application>();
然后我可以在 Api 端点中获取应用程序。
这种行为是不是很奇怪?我错过了什么吗?
【问题讨论】:
【参考方案1】:我发现了问题...
属性 Applications 必须是具体类型,例如:
public partial class Options
public List<Application> Applications get; set; = new List<Application>();
【讨论】:
以上是关于在类中初始化时未从设置中加载集合的主要内容,如果未能解决你的问题,请参考以下文章