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:
- 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();
}
}
- 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; }
}
- 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.