Sobes.tech
Junior — Middle

Kaip galima įgyvendinti priklausomybių injekciją programos valdikliuose?

sobes.tech AI

Atsakymas iš AI

Priklausomybių įvedimas (Dependency Injection, DI) C# programos kontroleriuose gali būti įgyvendintas keliais būdais:

  1. Per konstruktorių — dažniausiai ir rekomenduojamas būdas. Priklausomybės perduodamos per kontrolerio konstruktoriaus parametrus.
public class MyController : Controller
{
    private readonly IService _service;

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

    public IActionResult Index()
    {
        // Naudojant _service
        return View();
    }
}
  1. Per savybes (Property Injection) — priklausomybės nustatomos per kontrolerio savybes. Mažiau pageidautina, nes priklausomybės gali būti ne laiku inicializuotos.
public class MyController : Controller
{
    [Inject]
    public IService Service { get; set; }
}
  1. Per metodus (Method Injection) — priklausomybės perduodamos kaip parametrai kontrolerio metodams.
public IActionResult Index([FromServices] IService service)
{
    // Naudojant service
    return View();
}

ASP.NET Core integruotas DI konteineris palaiko visus šiuos būdus, tačiau konstruktorinė injekcija yra švariausia ir patogiausia testavimui.