Встречается на собеседованиях • сегодня

Что такое dependency injection

Dependency Injection (DI) — это паттерн проектирования, при котором зависимости передаются объекту извне, а не создаются внутри него. Это повышает гибкость, тестируемость и упрощает замену компонентов.

Пример без DI:

csharp
public class OrderService
{
    private readonly ILogger _logger = new FileLogger();
    // Жёсткая привязка к FileLogger
}

Пример с DI:

csharp
public class OrderService
{
    private readonly ILogger _logger;
    
    public OrderService(ILogger logger) // Зависимость внедряется через конструктор
    {
        _logger = logger;
    }
}

Преимущества:

  • Уменьшает связность кода
  • Упрощает модульное тестирование (можно подменить зависимости mock-объектами)
  • Позволяет легко менять реализацию зависимостей

В C# DI часто реализуется через встроенный контейнер (IServiceCollection) или сторонние библиотеки (Autofac, Ninject).

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы