Sobes.tech
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:

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