Как настроить Unity в n-уровневом приложении ASP .net MVC - PullRequest
2 голосов
/ 14 декабря 2010

У меня возникла небольшая проблема с выяснением того, как настроить контейнер Unity IoC в моем n-уровневом приложении ASP .net MVC.

В моем решении 3 проекта: 1. MVC (используется как представление): имеет отношение только к уровню бизнес-логики 2. Уровень бизнес-логики: имеет ссылку только на проект репозитория 3. Репозиторий: не имеет ссылки ни на один из вышеперечисленных проектов

Пожалуйста, обратите внимание на то, как работает моя справочная система, я сделал это так, чтобы я мог с меньшими трудностями заменить связь между своими уровнями, используя WCF.

Я настроил контейнер Unity в своем приложении MVC, выполняя что-то вроде этого (Global.asax):

container.RegisterType (); // MyService находится на моем уровне бизнес-логики

Класс MyService использует мой репозиторий в своем конструкторе, что означает, что при создании одного из этих классов MyService также требуется MyRepository:

общедоступный MyService (репозиторий IRepository): база (репозиторий) {}

Как видите, я еще не настроил IRepository в своем контейнере.

Я не хочу делать это в моем Global.asax, потому что я не хочу добавлять какие-либо ссылки на репозиторий на уровень MVC (просмотр).

Где лучше всего это настроить? Я немного запутался здесь ...

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

Вы пробовали: http://mvcunity.codeplex.com/

1 голос
/ 14 декабря 2010

Позвольте мне рассказать вам, что я сделал до сих пор:

Я создал статический класс в моем Сервисе и Хранилище Позже, я создаю контейнер Unity в моем View Layer (MVC) и передаю его этим статическим классамони заполняют контейнер тем, что им нужно, плюс следующий уровень, например, сервисный уровень также вызывает статический класс в моем хранилище.

Таким образом, я настраиваю контейнер со всем, что мне нужно.

Вопрос в том, хорошо ли это делать?

0 голосов
/ 16 апреля 2017

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

          //Data Layer dependency mapping as extension eg : IUnitOfWork
            container.AddNewExtension<DependencyInjectionExtension>();

Подробнее читайте в статье.

N-ярус с DI (Unity)

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...