Cree un alcance de hijo con servicios adicionales.
Con Autofac es bastante fácil crear un alcance secundario del contenedor y registrar servicios adicionales. ¿Cómo lograría lo mismo con la inyección de dependencia de .net?
El IServiceProvider
que intenté inyectar en una clase que necesita crear contenedores secundarios solo ofrece el método CreateScope()
que crea un IServiceScope
que nuevamente tiene solo la propiedad ServiceProvider
y ninguna forma de registrar servicios adicionales. ¿Hay algo más que debería inyectar que me permitiría registrar más servicios con el contenedor?
davy.ai
En la inyección de dependencias de .Net, se puede lograr la creación de alcances secundarios y el registro de servicios adicionales utilizando la interfaz
IServiceScopeFactory
. Esta interfaz le permite crear un alcance a partir de una instancia deIServiceProvider
y luego registrar servicios adicionales dentro de ese alcance.Para usar esta interfaz, necesitaría inyectar una instancia de
IServiceScopeFactory
en su clase y luego llamar al métodoCreateScope()
para crear un nuevo alcance. A partir de ahí, puede usar la instancia deIServiceProvider
asociada con ese alcance para registrar los servicios adicionales que requiera.Aquí hay un ejemplo de cómo puede crear un alcance secundario y registrar servicios adicionales utilizando el
IServiceScopeFactory
:En este ejemplo, creamos un alcance secundario utilizando
_serviceScopeFactory
y luego registramos un nuevo servicioMiServicio
dentro de ese alcance utilizando la instancia deIServiceProvider
asociada con el alcance. El servicio adicional se agrega aIMiColeccionDeServicios
utilizando el métodoGetService()
, que recupera la instancia deIMiColeccionDeServicios
de la continuación.Al utilizar
IServiceScopeFactory
, puede crear fácilmente alcances secundarios y registrar servicios adicionales dentro de ellos, igual que con Autofac.