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();
我正在尝试编写一个测试来验证是否在特定场景中加载了 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();