Что такое инъекция зависимостей (Dependency Injection) и как ее использовать в ASP.NET?

Пользователь

от guillermo , в категории: Другие , год назад

Что такое инъекция зависимостей (Dependency Injection) и как ее использовать в ASP.NET?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marc_zboncak , год назад

@guillermo 

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


ASP.NET включает в себя механизм встроенной поддержки DI, который позволяет внедрять зависимости в классы, поддерживая инверсию управления (Inversion of Control, IoC).


Вот как можно использовать DI в ASP.NET:

  1. Определите интерфейс зависимости:
1
2
3
4
public interface IService
{
    void DoSomething();
}


  1. Создайте класс, который реализует этот интерфейс:
1
2
3
4
5
6
7
public class Service : IService
{
    public void DoSomething()
    {
        // Логика
    }
}


  1. Зарегистрируйте зависимость и конфигурацию DI в файле "Startup.cs":
1
2
3
4
5
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton();
    services.AddMvc();
}


  1. Внедрите зависимость в класс через конструктор:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public class HomeController : Controller
{
    private readonly IService _service;

    public HomeController(IService service)
    {
        _service = service;
    }

    public IActionResult Index()
    {
        _service.DoSomething();
        return View();
    }
}


В результате система DI автоматически обрабатывает создание экземпляра класса HomeController, внедряя его зависимость на основе зарегистрированной конфигурации. Это позволяет использовать различные реализации интерфейса IService, в том числе для тестирования или простой замены зависимостей.

Пользователь

от brooklyn , 7 месяцев назад

@guillermo 

Вот пример того, как можно использовать Dependency Injection в ASP.NET Core MVC:

  1. Создайте интерфейс и его реализацию:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public interface IMyDependency
{
    void DoSomething();
}

public class MyDependency : IMyDependency
{
    public void DoSomething()
    {
        // Логика
    }
}


  1. Зарегистрируйте зависимость в методе ConfigureServices в классе Startup:
1
2
3
4
5
public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IMyDependency, MyDependency>();
    services.AddMvc();
}


  1. Внедрите зависимость в контроллер:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public class HomeController : Controller
{
    private readonly IMyDependency _myDependency;

    public HomeController(IMyDependency myDependency)
    {
        _myDependency = myDependency;
    }

    public IActionResult Index()
    {
        _myDependency.DoSomething();
        return View();
    }
}


При выполнении кода система DI автоматически создаст экземпляр класса HomeController и внедрит зависимость IMyDependency, используя зарегистрированную реализацию MyDependency. Это обеспечит гибкость и упростит тестирование и поддержку вашего приложения.