我有以下json配置
"Configurations": {
"KeyA": {
"Ids": []
},"KeyB": {
"Ids": [1,2,3]
},"KeyC": {
"Ids": [1,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
,因为它的 { {1}} 数组为空。我在网上阅读了配置绑定的行为,但据我所知,它应该将 Id 绑定为 null,但在这里它并没有在字典中生成一个键值对。
我尝试删除“Ids”属性,将我的配置保留为 Ids
,但这仍然不起作用。我能让它解析的唯一方法是在数组中放入一些数字,但这显然不是我想要的。
我想知道是否可以绑定这样一个键值对,其中我的数组中没有任何 Id。这似乎应该以某种方式开箱即用,但我不确定为什么它不起作用以及如何解决它,而无需实现一些hacky自定义配置加载器/绑定器。