Sobes.tech
Junior — Middle

Cum se poate implementa injectarea dependențelor în controlerele aplicației?

sobes.tech AI

Răspuns de la AI

Injecția de dependințe (Dependency Injection, DI) în controlerele unei aplicații C# poate fi realizată în mai multe moduri:

  1. Prin constructor — cel mai răspândit și recomandat mod. Dependințele sunt transmise prin parametrii constructorului controlerului.
public class MyController : Controller
{
    private readonly IService _service;

    public MyController(IService service)
    {
        _service = service;
    }

    public IActionResult Index()
    {
        // Utilizarea _service
        return View();
    }
}
  1. Prin proprietăți (Property Injection) — dependințele sunt setate prin proprietățile controlerului. Este mai puțin preferat, deoarece dependințele pot să nu fie inițializate la timp.
public class MyController : Controller
{
    [Inject]
    public IService Service { get; set; }
}
  1. Prin metode (Method Injection) — dependințele sunt transmise ca parametri metodelor controlerului.
public IActionResult Index([FromServices] IService service)
{
    // Utilizarea lui service
    return View();
}

În ASP.NET Core, containerul DI încorporat suportă toate aceste metode, dar injecția prin constructor este cea mai curată și mai ușor de testat.