dependency injection - ASP.NET Core inicializa singleton después de configurar DI
dependency-injection asp.net-core (1)
Entonces, digamos que tengo una instancia de clase singleton que me registro en la DI de esta manera:
services.AddSingleton<IFoo, Foo>();
Y digamos que la clase Foo
tiene otras dependencias (en su mayoría clases de repositorio que le permiten cargar datos).
Con mi comprensión actual, la instancia de Foo no se crea hasta que se usa (pregunta) por primera vez. ¿Hay alguna manera de inicializar esta clase que no sea el constructor? Como justo después de que ConfigureServices()
complete? ¿O debería hacerse el código de inicialización (cargando datos desde la base de datos) en el constructor de Foo?
(Sería bueno si esta clase pudiera cargar sus datos antes del primer uso para acelerar el acceso por primera vez)
Hazlo tú mismo durante el inicio.
var foo = new Foo();
services.AddSingleton<IFoo>(foo);
O "calentarlo"
public void Configure(IApplicationBuilder app)
{
app.ApplicationServices.GetService<IFoo>();
}
o alternativamente
public void Configure(IApplicationBuilder app, IFoo foo)
{
...
}
Pero esto se siente sucio y es más un problema con su diseño, si hace algo que no debería hacer en el constructor. La creación de instancias de clase tiene que ser rápida y si realiza operaciones de larga duración dentro de ella, se rompe con un montón de mejores prácticas y necesita refactorizar su base de código en lugar de buscar formas de piratearlo