Правильное использование контейнера Windsor внутри ASP.NET и ASP.NET MVC - PullRequest
1 голос
/ 09 июля 2010

Для нового проекта я использую контейнер Windsor для обеспечения Dependency Injection (DI).Я должен обеспечить мне слабую связь и высокую тестируемость.Так как я новичок в области внедрения зависимостей, у меня возникают проблемы с умением правильно его использовать.

Это то, что я выучил для статей и поиска в Google: у вас должен быть один момент запуска контейнера, которыйсоздается при запуске.Зависимости объектов должны учитываться при создании объекта.Ну, пока все хорошо.

Теперь для моей ситуации.В моем слое данных, который находится в другом проекте, мои классы данных полагаются на некоторую форму ведения журнала, которая устанавливается внутри конструктора.Но поскольку он находится внутри другого проекта, он не может получить доступ к контейнеру.

Единственное решение, которое приходит на ум, - это создание одноэлементного фабричного класса, в который вводится контейнер при запуске.Фабрика-одиночка поддерживает экземпляр контейнера и создает проекты экземпляров класса уровня данных, как это делает традиционный класс-фабрика, вместо этого теперь с DI.

Хотя это может показаться хорошим решением, чтение некоторых статей создает у меня ощущение, будто я упускаю что-то важное, но есть и другие варианты для достижения желаемого результата (мои классы слоя данных, созданные с помощью DI).Так что я мог бы использовать руководство.Примеры исходного кода были бы замечательными, но объяснения или ссылки на другие ресурсы также очень помогли бы мне.

Ответы [ 2 ]

2 голосов
/ 09 июля 2010

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

По сути, идея в том, что вам не нужно нигде ссылаться на свой контейнер, кроме Global.asax

0 голосов
/ 09 июля 2010

В этом посте дается хороший обзор настройки вашего проекта ASP.NET MVC для использования Windsor для разрешения зависимостей вашего контроллера.Как отметил Кжштоф, вы должны ссылаться на контейнер только в Global.asax.

http://blog.andreloker.de/post/2009/03/28/ASPNET-MVC-with-Windsor-programmatic-controller-registration.aspx

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