Есть ли способ зарегистрировать типы (т.е. репозитории) для приложения mvc 6 (vnext) в библиотеках классов dnx? Я не хочу вызывать AddTransient‹,>() в классе запуска сотни раз. Для n-уровневого приложения это не лучший подход.
Вопрос
Как зарегистрировать типы в библиотеках классов с помощью vnext?
- Что вы подразумеваете под в библиотеках классов dnx? Yuval Itzchakov 27.07.2015
- Мне нравится перемещать сопоставление типов интерфейса с типами объектов в мои библиотеки классов, чтобы иметь среду плагинов. endeffects 27.07.2015
Ответы
Ответ 1 · рейтинг 2 · Marko M.
Базовое использование IoC vNext не имеет возможности сканирования/пакетной регистрации.
В вашем случае вы должны использовать некоторые из "больших" контейнеров ioc, таких как Ninject, Unity, StructrureMap...
Ответ 2 · рейтинг 2 · David Driscoll
В библиотеках классов вы можете следовать тому же подходу, что и остальная часть фреймворка, который использует методы расширения на IServiceCollection. например. AddMvc, AddEntityFramework и т. д.
Для автоматической регистрации ничего не существует из коробки, но я создал библиотеку, которая дает вам атрибут [ServiceDescriptor], который вы можете использовать для привязки ваших интерфейсов к вашим классам (или просто применять к классу).
Метод расширения AddAssembly(...) просто выполняет поиск всех ваших атрибутов [ServiceDescriptor] и добавляет их в коллекцию сервисов.
Затем, чтобы использовать его, вам просто нужно сделать одно из следующих действий:
Добавьте метод расширения, как указано выше, и пусть метод расширения просто вызовет
services.AddAssembly(typeof(ExtensionClassInAssembly))Я считаю это упрощением, а также позволяет удалить метод AddAssembly и заменить его чем-то другим без необходимости изменять основной класс запуска.
Добавьте вызов
services.AddAssembly(typeof(TypeInAssembly))в свой Startup.cs
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Внедрение зависимостей Unity для служб WCF
- Разница между ioc и внедрением зависимостей
- Зависят ли параметры внедрения зависимостей от пользовательских настроек?
- Что такое Виндзорский замок и почему меня это должно волновать?
- Aspnet 5 (MVC6) Windows Auth + роли + атрибут авторизации
- Ссылка браузера основных веб-приложений не работает в проекте asp mvc 6