Prism и использование Unity IoC в Prism - PullRequest
0 голосов
/ 28 августа 2009

Я новичок в Призме. Я многое понял из вопросов о SO и из различных блогов. Я использую последнюю сборку - V2

Мне нужны некоторые объяснения о вещах, которые могут быть довольно простыми для вас, ребята, но это просто не входит в мои мозги (маленький для этого). Вместо того, чтобы делать все правильно в первый раз, за ​​который я потратил более двух недель, просматривая различные блоги, веб-трансляцию…, я подумал начать проект и учиться. Количество информации на этих сотнях сайтов было огромным, и их было трудно переварить. В настоящее время мой проект настроен так Оболочка - Module Модуль меню- ViewModel - - -> Служба меню - -> Хранилище меню ---  Данные

Все в разных сборках

MyShell --- MenuModule --- MyServices -- Мой репозиторий

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

ViewModel имеет ссылку на View - может жить с ним сейчас

View Model требует использования службы меню, а служба меню использует хранилище

Все построены с помощью инжектора конструктора. У меня сейчас работает, имея ссылки на модули MyService и Myrepository и затем регистрируя типы на уровне модуля. Но это не очень хорошо. Я не хочу жестко ссылаться на какие-либо проекты. Если мы ссылаемся на проекты, зачем использовать IoC. В MenuModule.cs (который находится в корне модуля) я могу зарегистрировать представления с контейнером единицы Мне кажется, я чувствую, что ответ на этот вопрос может быть в первом вопросе

  1. Является ли файл конфигурации ответом / Должен ли я использовать файл конфигурации для настоящая развязка?
  2. Если (как-то) мы можем зарегистрировать типы из кода, мы должны регистрировать типы на уровне модуля (I не хочу иметь жесткую ссылку на проекты)
  3. Мне нужно знать Интерфейсы заранее, так что вы рекомендую отдельную сборку для всего Интерфейсы?

Потерпи меня, если вопросы звучат очень глупо 10

Ответы [ 2 ]

1 голос
/ 28 августа 2009

Вам не нужен файл конфигурации для настоящей развязки. Все, что вам нужно, это зарегистрировать ваши типы в загрузчике вашей оболочки. Я обычно разбиваю свои проекты и рефери, как это.

Контрактная сборка (Содержит только несколько простых типов и интерфейсов)

Ссылка:

  • Shell
  • Модули

Shell (Содержит конкретные реализации интерфейсов, определенных в Контрактной сборке)

Ссылка:

  • Никто

модули (Объявляет зависимости от интерфейсов, определенных в сборке Contracts, например IMenuRegistry)

Ссылка:

  • Никто (я использую модуль каталогов для поиска модулей в каталоге)

Вот пример проекта, который я собрал. В этом примере для простоты я ссылаюсь на модуль из оболочки, но вы можете удалить эту ссылку и использовать каталог модулей каталога для загрузки скомпилированного модуля во время выполнения: http://dl.getdropbox.com/u/376992/CAGMenus.zip

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

0 голосов
/ 28 августа 2009

Вы определенно на правильном пути. Используйте файл конфигурации для регистрации ваших типов и поместите интерфейсы в отдельную сборку.

...