es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Acceda al objeto de configuración mientras configura los servicios.

En una aplicación de consola, en lugar de construir manualmente la IConfiguration e IServiceProvider, estoy intentando usar el proceso Host.CreateDefaultBuilder():

IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddSingleton();
})
.Build();

Puedo obtener el objeto de configuración después de construir el host. Pero lo que estoy buscando es una forma de obtener el objeto de configuración mientras todavía estoy en el cuerpo de ConfigureServices, para que pueda vincular una sección de configuración al proveedor de servicios.

Algo como:

AccountConfiguration accountConfig = new();
config.Bind(“AccountConfiguration”, accountConfig);
services.AddSingleton(accountConfig);
// or
services.Configure(config.GetSection(“AccountConfiguration”));

¿Hay alguna forma de acceder al objeto de configuración mientras aún se están configurando los servicios? ¿O una buena manera de agregar un objeto a la colección de servicios después de que el host ya haya sido construido?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes acceder al objeto de configuración mientras aún configuras los servicios. Puedes utilizar el método ConfigureServices para acceder al objeto IConfiguration y vincular la sección de configuración al proveedor de servicios. Por ejemplo:

    AccountConfiguration accountConfig = new();
    services.AddSingleton(accountConfig);
    services.Configure<AccountConfiguration>(config.GetSection("AccountConfiguration"));
    

    Alternativamente, puedes agregar un objeto a la colección de servicios después de que el host ya ha sido construido utilizando el método IServiceCollection.Add. Por ejemplo:

    services.Add(new ServiceDescriptor(typeof(AccountConfiguration), accountConfig));
    

Comments are closed.