Dependency injection in .NET Core

Disponible de forma nativa en .NET Core.

Implementación DI

interfaz de la cual se hace la DI

public interface IVehiculoService
{
	Vehiculo GetVehiculo(int id);
	
	string Arrancar();
}

implementación de la interfaz

public class VehiculoService: IVehiculoService
{
	public Vehiculo GetVehiculo(int id)
	{
		// consulta y retornar de BBDD
		return new Vehiculo();
	}

	public string Arrancar()
	{
		return "Arrancando";
	}
}

service donde se hace la DI

public class TallerService
{
	private readonly IVehiculoService _vehiculoService;

	public TallerService(IVehiculoService vehiculoService)
	{
		_vehiculoService = vehiculoService;
	}

	public string Reparar()
	{
		return _vehiculoService.Arrancar();
	}
}

Configuración inyector DI

Hay que registrar los servicios en un startup.cs. Hay 3 tipos:

  • transient: dependencies are created each time they’re called.
  • scoped: lives while request is available.
  • singleton: only created once for whole project.
public class Startup
{

	public IConfiguration Configuration { get; }
	
	public Startup(IConfiguration configuration)
	{
		Configuration = configuration
	}

	public void ConfigureServices(IServiceCollection services)
	{
		// add dependencies here
		services.AddTransient<IVehiculoService, VehiculoService>();
	}

}