PRISM 4 UICompositionБыстрый вопрос - PullRequest
0 голосов
/ 13 марта 2011

В этом примере быстрого запуска CreateShell () имеет

ShellView view = this.Container.TryResolve<ShellView>();

Мой вопрос заключается в том, как создается оболочка без передачи параметра viewmodel.Конструктор для Shellview определяется как

public ShellView(ShellViewModel viewModel)
{
    // ...
}

Спасибо.

1 Ответ

0 голосов
/ 13 марта 2011

В этом весь смысл внедрения зависимости.Если бы контейнер не мог создать экземпляры объектов, которые сами имеют зависимости, его было бы не очень практично использовать.

Ответ заключается в том, что контейнер отражает ShellView и находит конструктор с наибольшим количеством параметров (тривиальноздесь, так как есть только один на выбор).Затем для каждого параметра он ищет его тип ShellViewModel и затем рекурсивно пытается выяснить, как создать экземпляр параметра.

Предполагая, что в какой-то момент «дерево» зависимостей заканчивается (он находит зависимости, которыене имеют параметров конструктора, например ShellViewModel здесь), он начинает строить зависимости и, наконец, попадает в запрошенный вами объект.

В этом примере он видит, что может создать ShellViewModel тривиально (и), затем вызывает конструктор ShellView с этим объектом в качестве аргумента.

...