Asp.Net Core está preparado para poder trabajar de forma nativa con Inyección de dependencia. Para poder utilizar este mecanismo, Asp.Net Core utiliza un contenedor de IoC (Invevrsión de Control) integrado, donde para poder inyectar la dependencia de objetos de clase, lo hace a través del método constructor.
Este
contenedor integrado está representado a través de la implementación de
IServiceProvider. Es por eso, que los tipos administrados por el contenedor
integrado IoC, se denominan Services (servicios).
Configuración
Para que
Asp.Net a través del contenedor IoC , inyecte de manera automática, los servicios
que vamos desarrollando dentro de la aplicación, debemos registrarlos en el
método ConfigureServices de la clase Startup. Este incluye un parámetro del
tipo IServiceCollection que se utiliza para registrarlos.
Vida útil
Al
configurar la inyección de nuestros servicios, podemos establecer la vida útil
de los mismos
Scoped:
Creará una única instancia del tipo de servicio, una vez por solicitud y será
compartida durante la vida de ésta.
Singleton:
El contenedor IoC expondrá una única instancia del servicio durante la vida
útil de la aplicación.
Transient:
Se creará una instancia del tipo de servicio, cada vez que lo invoque.
Cómo utilizarlo
public class MyController : Controller
{ // Definir una variable privada del
// tipo del servicio a inyectar private readonly ICalculos _calculos; // Inyectar en el constructor el servicio
public MyController(ICalculos calculos)
{ // asignar a mi variable el servicio inyectado
_calculos = calculos;
} [HttpGet("suma/{num1}/{num2}")]
public IActionResult<int> Suma(int num1, int num2)
{
var resultado =_calculos.sumar(num1,num2);
return Ok(resultado);
}
}



