Sobes.tech
Back to questions
Junior — Middle
71

Можете объяснить, что такое внедрение зависимостей (Dependency Injection) в C# и зачем она нужна?

Companies where asked
Бренд Монитор

Answer from AI

sobes.tech AI

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

Зачем это нужно:

  • Упрощает замену зависимостей (например, для тестирования можно подставить мок-объекты).
  • Снижает связанность компонентов.
  • Улучшает читаемость и поддержку кода.

Пример простого DI через конструктор:

public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message) => Console.WriteLine(message);
}

public class UserService
{
    private readonly ILogger _logger;

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

    public void CreateUser(string name)
    {
        // Логика создания пользователя
        _logger.Log($"User {name} created.");
    }
}

// Использование
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");