【发布时间】:2022-04-08 07:29:34
【问题描述】:
我正在尝试在 C#/.net6 中的应用启动时将值加载到自定义选项类中。来自appsettings.json 的一些输入没有按我的意愿加载。
我的选项类如下所示:
public class CustomOptions
{
public Dictionary<string, CustomInfo> MyOptions { get; set; }
}
public class CustomInfo
{
public Dictionary<string, string> DictionaryField { get; set; } = new Dictionary<string, string>();
public List<string> ListField { get; set; } = new List<string>();
}
而appsettings.json 包含以下内容:
"CustomOptions" : {
"MyOptions": {
"OptionOne": {},
"OptionTwo": {
"DictionaryField": {
"ValueOne": "somevalue",
"ValueTwo": "someothervalue"
},
"ListField": [
"ListItem"
]
}
}
}
并在 Program.cs 中加载选项
builder.Services.AddOptions<EndpointOptions>().Bind(builder.Configuration.GetSection(EndpointOptions.Key));
目前,OptionTwo 已正确加载并设置了所有字段,但 OptionOne 甚至没有出现在注入的IOptions<TOptions> 服务中。
我希望将 OptionOne 加载到带有默认 CustomInfo 对象或空值的 MyOptions 字典中。这可能吗?
编辑:我需要能够在某些时候添加除 OptionOne 和 OptionTwo 之外的更多选项,理想情况下可以通过 appsettings.json 来做到这一点,因此需要 @ 中的字典987654330@上课。所有这些选项仍将遵循 CustomInfo 类。
【问题讨论】:
标签: c# .net-core configuration .net-6.0