DependencyInjection (DI)
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 он сам предаст создаст зависимости передаст запрашиваемому объекту и создаст и вернёт его не нужно его вручную создавать и всё передавать
Главное: все зависимости должны быть зарегистрированы и точка а иначе объект не сможет его создать.