MVVM и внедрение зависимостей

В настоящее время я изучаю шаблон 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, если да, то как это достигается?

Спасибо.

6
задан Darren Young 7 June 2011 в 10:34
поделиться