我已经使用 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/

10-17 02:31