Дополнительно
Как создать инъекции зависимостей для ASP.NET в MVC 5?
Создание и внедрение зависимостей с ASP.NET ядро довольно легко. Документация объясняет это очень хорошо здесь и это [убийца видео][2], чтобы объяснить это.
Однако, я хочу сделать то же самое с моим проектом ASP.NET в MVC 5. Как справиться с внедрения зависимостей с ASP.В MVC 5?
Кроме того, внедрение зависимостей ограничивается только контроллеры или она может работать с любым классом?
36
8
В ASP.Net в MVC можно использовать .Чистая ядро Ди из NuGet, а не один из сторонних альтернатив:-
Для MVC в начало класс/конфигурация:-
Мой проект использует идентификатор пользователя и я'вэ заменены OWIN в запуск конфигурации выполните сервис-ориентированного подхода вместо. Идентификация классов пользователей по умолчанию использовать статические методы фабрики для создания экземпляров. Я'вэ переехал этот код в конструкторах и опирался на Ди, чтобы обеспечить соответствующие инъекции. Он по-прежнему работать в прогресс, но вот где я нахожусь по адресу:-
Контроллер учетной записи класс имеет один конструктор:-
За этот ответ я скачал пример Майкрософт проект веб-API в качестве основы для примера и добавил Ди услуги следующим образом:
После стандартной конфигурации MapHttpRoute, добавить код для регистрации, какие услуги вам нужны
Затем я внес изменения в существующий контроллер, чтобы взять Ди типа (Внимание, есть только один конструктор)
Я рекомендую вам использовать Autofac, есть и другие fwk нравится Unity, ninject, autofac ориентиры и низкая производительность.
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
Вот это интеграция с MVC (и работает со всем классом)
http://docs.autofac.org/en/latest/integration/mvc.html
Самый простой способ реализует внедрение зависимостей в ASP.NET в MVC 5 заключается в использовании инструмент, разработанный самой Microsoft, под названием "Единство".
Вы можете найти много ресурсов в интернете о нем, и вы можете начать с чтения официальной документации здесь: разработчик'ы руководство для внедрения зависимостей с помощью Unity
Она работает с любым классом, в любом проекте, так долго, как вы зарегистрируетесь интерфейса, связанные с реализацией (если вы хотите взять прибыль МОК шаблон), все, что вам нужно сделать, это добавить интерфейс инициализацию в конструкторе.
Мой Решатель Зависимостей По Умолчанию
В данном видео специалист MVP по Microsoft Демос зависимостей инъекции в MVC5 с AutoFac. Очень четкое объяснение о том, как его настроить:
Зависимость MVC5 инъекции демо
Исходный код доступен на на GitHub
Отсюда https://scottdorman.blog/2016/03/17/integrating-asp-net-core-dependency-injection-in-mvc-4/
эта строка меня спасла.
услуги.AddControllersAsServices(для вызова typeof(запуск).Сборка.GetExportedTypes() .Где(Т => !Т.IsAbstract &&усилителя; !Т.IsGenericTypeDefinition) .Где(Т => typeof на(IController).IsAssignableFrom(Т) || Т.Имя.Метода endswith (на"контроллер" и, значение stringcomparison.OrdinalIgnoreCase)));
Я рекомендую использовать "Виндзор", установив пакет NuGet замок Виндзор в MVC загрузчика, затем можно создать сервис, который реализует IWindsorInstaller``, что-то вроде этого:
Затем внутри вашего контроллера что-то вроде этого:
И по умолчанию библиотека будет обрабатывать отправку правильный сервис для вашего контроллера путем вызова установить()
от
ServiceRegisterпри запуске, потому что он реализует
IWindsorInstaller`