c# - C# 选项模式自定义配置提供程序
问题描述
我在从自定义配置提供程序类中初始化包含自定义对象数组的选项对象时遇到问题。与 HostBuilder DI 容器一起使用我遵循了本教程,但它对我的用例没有帮助
我有以下选项类
public sealed class FooOptions
{
public Bar[] Bars { get; set; }
}
以下选项配置提供程序类
public class FooConfigurationProvider : ConfigurationProvider
{
public override void Load()
{
Data = CreateConfiguration();
}
public IDictionary<string, string> CreateConfiguration()
{
var configuration = new Dictionary<string, string>();
var fooOptionsName = nameof(FooOptions);
var bars = new Bar[]
{
new Bar()
{
Blah = "A"
},
new Bar()
{
Blah = "B"
}
};
for (var i = 0; i < bars.Length; i++)
{
configuration.Add($"{fooOptionsName}:Bars:{i}:Blah",
bars[i].Blah);
}
return configuration;
}
}
这是酒吧类
public sealed class Bar
{
public string Blah { get; set; }
}
我的问题是 FooOptions 类 Bars 属性由于某种原因未初始化,因为初始化适用于原始类型,但由于某种原因不适用于自定义类型。
有人知道如何通过配置提供程序初始化 FooOptions 类吗?
解决方案
推荐阅读
- python - Plotly 在图中设置跟踪位置
- html - 我的 getFirstEmptyRow 函数返回相同的 gsheet 行号,即使在使用应用程序脚本附加新数据后也是如此
- reactjs - 无法在路径中找到 .env 文件:./.env.local
- arrays - 在赛普拉斯中 - 如何将元素存储在数组中,然后将相同的元素相互比较?
- python - 如何在pygame中显示FPS计数器?
- reactjs - 当自定义钩子状态发生变化时,反应原生屏幕不会重新渲染
- c - 嗨,我需要让用户输入 3 个值,直到他输入 EOF(Ctrl+z)。EOF 部分不起作用,用户每次输入 6 个值,我需要 3 个
- typescript - 如何从函数参数中获取对象属性值作为类型
- javascript - HTML 和 Javascript 中的浏览器摄像头权限监听器
- perl - Perl 模块 `Math::Base::Convert` 是线程安全的吗?