在 class 中初始化时未从设置中加载集合
Collection not loaded from settings when is initialised in class
使用 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);
选项 class 是:
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
是一个空集合。
如果我不初始化 Applications
属性 in Options
class,例如:
public partial class Options {
public IEnumerable<Application> Applications { get; set; } = new List<Application>();
}
然后我能够在 Api 端点内获取应用程序。
这种行为是不是很奇怪?我错过了什么吗?
我发现了问题...
属性 应用程序必须是具体类型,例如:
public partial class Options {
public List<Application> Applications { get; set; } = new List<Application>();
}
使用 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);
选项 class 是:
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
是一个空集合。
如果我不初始化 Applications
属性 in Options
class,例如:
public partial class Options {
public IEnumerable<Application> Applications { get; set; } = new List<Application>();
}
然后我能够在 Api 端点内获取应用程序。
这种行为是不是很奇怪?我错过了什么吗?
我发现了问题...
属性 应用程序必须是具体类型,例如:
public partial class Options {
public List<Application> Applications { get; set; } = new List<Application>();
}