DependencyInjection (DI)

В переводе внедрение зависимости

Суть позволяет настроить зависимости так чтоб в будущем не приходилось самим их вручную создавать а можно сказать заказывать объекты у DI который сам создаст и передаст зависимости

Например:

public MainWindow()
{
    InitializeComponent();
    DataContext = new MainWindowVM()
}

или через конструктор сути не меняет всё ровно бы пришлось вручную где то его создавать. C виду в чём сложность написать new() да не сложно а что если он требует 10+ зависимости типа БД контекста каких-то сервисов а они также что-то требует и тут начинаются проблема каждый объект может хранить то что ему не нужно но нужно тем кто через него создаётся и приходится раз-за разом их пробрасывать всё глубже и глубже и за таким становится сложно следить.

DI предлагает их один раз зарегистрировать

services.AddSingleton<MainWindow>();
services.AddSingleton<MainWindowVM>();

и что получается достаточно их лишь заказать

public MainWindow(MainWindowVM vm)
{
    InitializeComponent();
    DataContext = vm;   
}

создание займётся DI он сам предаст создаст зависимости передаст запрашиваемому объекту и создаст и вернёт его не нужно его вручную создавать и всё передавать

Главное: все зависимости должны быть зарегистрированы и точка а иначе объект не сможет его создать.

Built with LogoFlowershow