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

Что такое инверсия зависимостей Dependency injection

Инверсия зависимостей (Dependency Inversion Principle, DIP) — принцип SOLID, который гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня, а оба должны зависеть от абстракций. Dependency Injection (DI) — это паттерн, реализующий DIP, позволяющий внедрять зависимости извне, а не создавать их внутри класса.

Пример без DI:

csharp
public class OrderService
{
    private readonly Database _db = new Database(); // Жёсткая зависимость
    public void SaveOrder() => _db.Save();
}

Пример с DI:

csharp
public interface IDatabase
{
    void Save();
}

public class OrderService
{
    private readonly IDatabase _db;
    public OrderService(IDatabase db) => _db = db; // Зависимость внедрена
    public void SaveOrder() => _db.Save();
}

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

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

В C# DI часто реализуют через контейнеры (Microsoft.Extensions.DependencyInjection, Autofac и др.), которые управляют созданием и временем жизни объектов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

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