Como acessar o IConfigurationRoot na boot no .net core 2?

Eu escrevi um ConfigurationProvider personalizado com a estrutura de entidade. Como eu também quero torná-lo atualizável durante o tempo de execução, criei um IWritableableOption .

Eu preciso atualizar a configuração após a atualização. Isso pode ser feito via IConfigurationRoot.Reload .

No entanto, como posso obter o IConfigurationRoot no .net core 2?

O que eu descobri é que nas versões anteriores o IConfigurationRoot fazia parte da boot. No .net core 2, no entanto, temos apenas o tipo mais simples 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; } 

Eu também descobri, eu posso pegar minha própria instância usando

 WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration(context, builder) => { var configurationRoot = builder.build() }) 

Mas eu quero atualizar a configuração usada pelo Startup.

Então, como posso obter o IConfigurationRoot usado pelo Startup para injetá-lo em minha coleção de serviços?