1

Я использую этот пример блог:MVC Ninject: Как добавить Ninject привязок из проекта MVC Area

http://blog.longle.net/2012/03/29/building-a-composite-mvc3-application-with-pluggable-areas/

Я имею понятие, работающее в моем решении. Тем не менее, я пытаюсь найти хороший способ только добавить привязки к ядру, если у пользователя есть разрешения на доступ к модулю/области.

Я кое-что прочитал в ServiceLocator, но я старался держаться подальше от него.

Одна вещь, которую я пытаюсь просто заставить работать, - это использование пользователем Контрактор-инъекция в конструкторе по умолчанию для модуля. Это работает, но это взломать.

Образец, который я использую, каждый проект модуля создает класс, который наследуется от AreaRegistion. Когда каждый проект модуля строится, соответствующие файлы копируются в папку Areas основного веб-проекта. Затем, когда основная загрузка проекта, отражение используется для загрузки всех модулей. Затем, когда вызывается AreaRegistration.RegisterAllAreas(), он обнаруживает и загружает все модули классом, который наследует AreaRegistration.

Я хотел бы найти хороший способ доступа к ядру Ninject и добавить привязки в классе модуля, который наследуется от AreaRegistration. Я бы предположил, что инициирующий код добавляет привязки из переопределения RegisterArea().

Я ищу любые предложения о том, как это сделать, не прибегая к ServiceLocator.

Любые идеи были бы весьма признательны.

ответ

0

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

Затем используйте Kernel.Load в моем основном загрузочном устройстве приложения, чтобы инициализировать Load overloads во всех классах плагинов, которые наследуются от NinjectModule.