Как различаются жизненные циклы объектов в Dependency Injection для транзиентного, Scoped и синглтон режима?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

Пример регистрации в ASP.NET Core:

services.AddTransient<IService, Service>(); // новый объект каждый раз
services.AddScoped<IService, Service>();   // один объект на запрос
services.AddSingleton<IService, Service>(); // один объект на всё время

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку