ASP.NET IConfiguration,如何迭代或枚举Providers

ASP.NET IConfiguration, how to iterate or enumerate Providers

我正在尝试编写一个测试来验证是否在特定场景中加载了 X 提供程序。

我可以解析 IConfiguration 对象,我怎么知道里面有多少 IConfigurationProviders

在我的启动过程中,我在我的程序中使用了完全糟糕的标准配置

IConfiguration configuration = null;
var builder = Host.CreateDefaultBuilder()
    .ConfigureServices((hostContext, services) =>
    {
        configuration = hostContext.Configuration;
        var startup = new Startup(hostContext.Configuration, hostContext.HostingEnvironment);
        //startup.ConfigureServices(services);
    })

    .ConfigureAppConfiguration((hostContext, config) =>
    {
        config.AddAzureKeyVaultsFromConfig();
    });

builder.Build();
return configuration;

当我调试时,当我将鼠标悬停在 configuration 上时,我可以看到我的提供商列表。

我想做的是看到有 4 个提供商。我还想检查并查看提供者的类型。

如果我使用 Enumerate(),它只会给我一个包含所有值的扁平列表,并丢弃它来自哪个提供商。

您这里的对象实际上是一个 IConfigurationRoot, and that happens to also implement IConfiguration. So if you treat it as such, you can access the Providers 属性。例如:

IConfigurationRoot configuration = null;

// snip the rest of your code

var providerCount = configuration.Providers.Count();