В настоящее время я изучаю шаблон MVVM, и в руководстве, которому я следую, используется Unity для DI. Раньше я действительно не использовал DI таким образом и просто хотел прояснить свои мысли о том, как работает этот конкретный код.
В представлении у меня есть:
private ViewModel vm;
[Dependency]
public ViewModel VM
{
set
{
vm = value;
this.DataContext = vm;
}
}
где атрибут dependency сообщает Unity внедрить сюда. Конструктор ViewModel принимает объект IQuoteSource, который зарегистрирован в Unity как таковой:
IUnityContainer container = new UnityContainer();
RandomQuoteSource randomQuoteSource = new RandomQuoteSource();
container.RegisterInstance<IQuoteSource>(randomQuoteSource);
MainWindow window = container.Resolve<MainWindow>();
window.Show();
Как именно это работает, поскольку я никогда явно не создаю объект ViewModel, используя указанное выше свойство. Все ли это делается в Unity, если да, то как это достигается?
Спасибо.