Sobes.tech
Назад к вопросам
Middle
5

Dependency Injection — как работает? Чем отличаются времена жизни сервисов?

Компании, где спрашивали
СБК ПАРУС

Ответ от нейросети

sobes.tech AI

Dependency Injection (DI) — это паттерн, который позволяет передавать зависимости объекта извне, а не создавать их внутри. В C# DI часто реализуется через конструктор, свойства или методы, а также поддерживается фреймворками, например, Microsoft.Extensions.DependencyInjection.

Важная часть DI — управление временем жизни сервисов:

  • Transient — сервис создаётся каждый раз при запросе. Используется для лёгких, не сохраняющих состояние объектов.
  • Scoped — сервис создаётся один раз на область (например, на HTTP-запрос в веб-приложении). Позволяет сохранять состояние в рамках одного запроса.
  • Singleton — сервис создаётся один раз на всё время работы приложения и переиспользуется.

Пример регистрации сервисов:

services.AddTransient<IService, Service>();
services.AddScoped<IService, Service>();
services.AddSingleton<IService, Service>();

Таким образом, DI упрощает тестирование, повышает модульность и управляемость кода, а времена жизни сервисов помогают контролировать ресурсы и состояние объектов.