2009-06-23 3 views
0

У меня есть UnityContainer, который получает информацию о конфигурации во время выполнения в файле global.asax веб-приложения MVC.Лучшая практика - Поделитесь UnityContainer через уровни в Asp.net MVC?

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

Как я могу поделиться ими? Я не хочу иметь ссылку между моей сборкой данных и MVC, но хочу, чтобы сборка данных имела доступ к UnityContainer, который был настроен веб-приложением.

Мне интересно, что делают другие в этой ситуации.

ответ

0

Я использую StructureMap (аналогичный инструмент) и, как правило, делюсь своей конфигурацией по проектам в решении. Это означает, что они не имеют прямого доступа к одному и тому же объекту, если только они не работают в одном контексте. В простом приложении, где сайт загружает сборку для выполнения работы с контроллера на бизнес-уровень, а затем в dal ... они действительно используют один и тот же объект. Но как только вам нужно поместить ваш уровень в физически отдельные слои (аппаратные), тогда конфигурация может пойти с ним. Это становится проблемой развертывания в то время.

+0

правый, но нет конфигурации. У меня было решение, которое работало, когда я использовал конфигурационные файлы, но после того, как я был слишком много раз большим рефакторингом, я отказался от XML-ада и использую C# для подключения контейнера. Поэтому, когда я делился конфигурацией, мне теперь нужен другой подход. – 2009-06-23 22:11:59

1

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

т.е.

// настроить контейнер

бла бла бла

// зарегистрировать себя

Container.RegisterInstance (контейнер);

Тогда любой, кому это нужен, просто имеет его как зависимое свойство или конструктор param.

Смежные вопросы