Junior — Middle
W jaki sposób można zaimplementować wstrzykiwanie zależności w kontrolerach aplikacji?
sobes.tech AI
Odpowiedź od AI
Wstrzykiwanie zależności (Dependency Injection, DI) w kontrolerach aplikacji C# można realizować na kilka sposobów:
- Przez konstruktor — najpowszechniejszy i zalecany sposób. Zależności są przekazywane przez parametry konstruktora kontrolera.
public class MyController : Controller
{
private readonly IService _service;
public MyController(IService service)
{
_service = service;
}
public IActionResult Index()
{
// Użycie _service
return View();
}
}
- Przez właściwości (Property Injection) — zależności są ustawiane przez właściwości kontrolera. Mniej preferowane, ponieważ zależności mogą nie być zainicjalizowane na czas.
public class MyController : Controller
{
[Inject]
public IService Service { get; set; }
}
- Przez metody (Method Injection) — zależności są przekazywane jako parametry do metod kontrolera.
public IActionResult Index([FromServices] IService service)
{
// Użycie service
return View();
}
W ASP.NET Core wbudowany kontener DI obsługuje wszystkie te sposoby, ale najczystszy i najwygodniejszy do testowania jest wstrzykiwanie przez konstruktor.