Для нового проекта я использую Виндзорский контейнер для обеспечения Внедрения зависимости (DI). DI должен предоставить мне слабую связь и высокую тестируемость. Так как я плохо знаком с предметом внедрения зависимости, я испытываю затруднения при переносе моей головы, как использовать его правильно.
Это - то, что я изучил для статей и поиска с помощью Google: у Вас должен быть один момент выполнения контейнера, которое создается при запуске. Зависимость объектов должна заботиться о при создании объекта. Ну, пока неплохо.
Теперь для моей ситуации. В моем слое данных, который находится в другом проекте, мои классы данных полагаются на некоторую форму входа, который установлен в конструкторе. Но так как это в другом проекте, это не может получить доступ к контейнеру.
Единственным решением, которое появляется для возражения, является создание одиночный элемент подобный фабрике класс, где контейнер введен в при запуске. Одноэлементная фабрика держится, контейнерный экземпляр и создание проекта экземпляров класса слоя данных как традиционный класс фабрики сделали бы, вместо этого теперь с DI.
В то время как это казалось бы, что хорошее решение, читая некоторые статьи дает мне чувствование, что я пропускаю что-то важное, что существуют другие опции достигнуть результата, я хочу (мои классы слоя данных, созданные с DI). Таким образом, я мог использовать, прибывают руководство. Примеры исходного кода были бы потрясающими, но объяснения или ссылки на другие ресурсы также помогут мне много.
Недавно я написал несколько постов в блоге, которые могут быть вам полезны.
В основном идея заключается в том, что вам не нужно ссылаться на ваш контейнер нигде, кроме Global.asax
В этом сообщении дается хороший обзор настройки вашего проекта ASP.NET MVC для использования Windsor для разрешения зависимостей вашего контроллера. Как заметил Кштоф, вы должны ссылаться на контейнер только в Global.asax.