【发布时间】:2021-06-03 05:47:42
【问题描述】:
我有以下json配置
"Configurations": {
"KeyA": {
"Ids": []
},
"KeyB": {
"Ids": [1, 2, 3]
},
"KeyC": {
"Ids": [1, 2, 3],
"OptionalData": "asdf"
}
}
然后将其读入以下对象
public class AppConfiguration
{
public Dictionary<ConfigType, ConfigurationData> Configurations {get; set;} = new Dictionary<ConfigType, ConfigurationData>();
}
public class ConfigurationData
{
public HashSet<int> Ids {get;set;} = new HashSet<int>();
public string OptionalData = "";
}
public Enum ConfigType
{
KeyA = 1,
KeyB = 2,
KeyC = 3
}
然后我在ConfigureServices(IServiceCollection services) 方法中使用
services.Configure<AppConfiguration>(this.Configuration);
但是,我注意到配置绑定生成了我的AppConfiguration 的字典,其中只有KeyB 和KeyC 键,跳过KeyA,因为它的Ids 数组是空的。我在线阅读了配置绑定的行为,但据我所知,它应该将 Ids 绑定为 null,但在这里它只是不会在字典中生成键值对。
我尝试删除“Ids”属性,将我的配置保留为"KeyA": {}",但这仍然不起作用。我可以解析它的唯一方法是在数组中放入一些数字,但这显然不是我想要的。
我想知道我是否可以绑定这样一个键值对,我的数组中没有任何 Id。这似乎应该以某种方式支持开箱即用,但我不确定为什么它不工作以及如何解决它,而无需实现一些 hacky 自定义配置加载器/绑定器。
【问题讨论】:
-
嗨@Kobek,我想你需要参考这个github问题:github.com/aspnet/Configuration/issues/864。如果不实现自定义活页夹,似乎无法满足您的要求。
-
我不相信这是同一个问题。它不是我遇到问题的字符串:( 我已经定义了一个包含键及其值的字典,其中一个值恰好包含一个空数组。我认为这不应该是有意义的已满。我确实认为这是一个错误,但似乎不是报告的那个
标签: asp.net-core configuration binding options