Чем больше кодовая база, тем больше удобочитаемости крайне важно. Попытка понять некоторую крошечную функцию не так плоха. (Тем более, что Имя метода в примере дает Вам ключ к разгадке.) Не настолько большой для некоторой эпической части кода uber, записанного гением одиночки, который просто вышел из кодирования, потому что он наконец видел вершину сложности своей способности и это - то, что он просто записал для Вас, и Вы никогда не будете понимать его.
Разница в том, кто отвечает за создание представления. В сценарии IRegion.Add
(также называемом Внедрение представления ) вы несете ответственность за предварительное создание экземпляра представления. В другом сценарии с RegisterViewWithRegion
(также называемым View Discovery ) диспетчер регионов создает экземпляр самого представления.
Есть некоторые технические причины, по которым вы захотите сделать то или иное . Например
Соответствующая документация: Для компоновки представлений (включая внедрение представлений и обнаружение представлений и обсуждение подходов View-First или View-Presenter-First): http://msdn.microsoft.com/en-us/library/dd458944.aspx
Также есть действительно удобный раздел «когда использовать каждый». Вот выдержка из документации:
- Явный или программный контроль над тем, когда создается представление и отображается, или когда вам нужно удалить представление из региона, для Например, в результате применения логика.
- Для отображения нескольких экземпляров одних и тех же представлений в области, где каждый экземпляр представления привязан к разные данные.
- Чтобы контролировать, какой экземпляр региона добавляется вид (для например, если вы хотите добавить просмотр сведений о клиенте для конкретного регион детализации клиента). Обратите внимание, что этот сценарий требует ограниченного регионов, описанных далее в этом тема.
Надеюсь, это поможет.
RegisterViewWithRegion вызывает событие OnContentRegistered, но, конечно, этого не может быть в зависимости от вашего DI