我已经使用 Entity Framework 编写了自定义的ConfigurationProvider
。由于我还想使其在运行时期间可更新,因此我创建了一个 IWritableableOption
。
我需要在更新后刷新配置。这可以通过 IConfigurationRoot.Reload
完成。
但是,如何在.net core 2中获取IConfigurationRoot
?
我发现,在以前的版本中,IConfigurationRoot
是启动的一部分。但是,在.net core 2中,我们只有更简单的类型IConfiguration
:
public Startup(IConfiguration configuration)
{
// I tried to change this to IConfigurationRoot,
// but this results in an unresolved dependency error
Configuration = configuration;
}
public IConfiguration Configuration { get; }
我也发现,我可以使用
WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration(context, builder) => {
var configurationRoot = builder.build()
})
但是我想更新启动所使用的配置。
那么,如何获得
IConfigurationRoot
使用的Startup
将其注入(inject)我的服务集合中? 最佳答案
感谢Dealdiane's评论。
我们可以向下转换IConfiguration
:
public Startup(IConfiguration configuration)
{
Configuration = (IConfigurationRoot)configuration;
}
public IConfigurationRoot Configuration { get; }
我仍然不确定这是否是预期的方式,因为
IConfiguration
不能对IConfigurationRoot
做出任何保证。关于c# - 如何在.net core 2上启动时访问IConfigurationRoot?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48939567/