Sobes.tech
Back to questions
Junior — Middle
64

Какими способами можно реализовать внедрение зависимостей в контроллеры приложения?

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, DI) в контроллеры приложения на C# можно реализовать несколькими способами:

  1. Через конструктор — самый распространённый и рекомендуемый способ. Зависимости передаются через параметры конструктора контроллера.
public class MyController : Controller
{
    private readonly IService _service;

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

    public IActionResult Index()
    {
        // Использование _service
        return View();
    }
}
  1. Через свойства (Property Injection) — зависимости устанавливаются через свойства контроллера. Менее предпочтительно, так как зависимости могут быть не инициализированы вовремя.
public class MyController : Controller
{
    [Inject]
    public IService Service { get; set; }
}
  1. Через методы (Method Injection) — зависимости передаются как параметры методов контроллера.
public IActionResult Index([FromServices] IService service)
{
    // Использование service
    return View();
}

В ASP.NET Core встроенный контейнер DI поддерживает все эти способы, но конструкторное внедрение является наиболее чистым и удобным для тестирования.