Единство только заставляет себя ценить без необходимости чего-либо зарегистрированного? - PullRequest
1 голос
/ 01 октября 2010

Я смотрю удивительное вступление Майка Таутли в Prism. Все это имело смысл, но я немного запутался в шестом видео.

У него есть конструктор класса представления, принимающий параметр ViewModel. Затем он говорит, что единство заменит это для нас (то есть создаст это).

В прошлом ему приходилось регистрировать подобные вещи (например, IMyClass, зарегистрированный в MyClass). Но он не сделал этого для ViewModel.

Единственное отличие, которое я вижу, состоит в том, что зависимость от ViewModel была не интерфейсом, а прямым классом. Единство видит это и просто пытается построить ViewModel, или я пропустил шаг? (И если бы у ViewModel были параметры, он бы тоже попытался их создать?)

Ответы [ 2 ]

2 голосов
/ 01 октября 2010

Когда можно создать экземпляр типа (т. Е. Не базовый класс или интерфейс), единица может выяснить, как создается этот тип без необходимости регистрации сопоставления типов.

Отображения полезны, когда тип длябыть введенным не является инстанцируемым само по себе.

Надеюсь, это поможет.

Спасибо, Дамиан

1 голос
/ 01 октября 2010

Unity пытается создать класс, внедряющий разрешенные зависимости в самый большой конструктор (с максимальным числом параметров).

Итак, если у вас есть такая модель представления:

public class ViewModel
{
    public ViewModel(IMyDependency dependency) { .. }
    ...
}

Вам нужно только зарегистрироваться IMyDependency.

...