Back to questions
Andersen
Junior — Middle
64
Какими способами можно реализовать внедрение зависимостей в контроллеры приложения?
Companies where asked
Answer from AI
sobes.tech AI
Внедрение зависимостей (Dependency Injection, DI) в контроллеры приложения на C# можно реализовать несколькими способами:
- Через конструктор — самый распространённый и рекомендуемый способ. Зависимости передаются через параметры конструктора контроллера.
public class MyController : Controller
{
private readonly IService _service;
public MyController(IService service)
{
_service = service;
}
public IActionResult Index()
{
// Использование _service
return View();
}
}
- Через свойства (Property Injection) — зависимости устанавливаются через свойства контроллера. Менее предпочтительно, так как зависимости могут быть не инициализированы вовремя.
public class MyController : Controller
{
[Inject]
public IService Service { get; set; }
}
- Через методы (Method Injection) — зависимости передаются как параметры методов контроллера.
public IActionResult Index([FromServices] IService service)
{
// Использование service
return View();
}
В ASP.NET Core встроенный контейнер DI поддерживает все эти способы, но конструкторное внедрение является наиболее чистым и удобным для тестирования.