首页 > 解决方案 > 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 类吗?

标签: c#

解决方案


推荐阅读