Зарегистрируйте контроллеры ASP.NET MVC 3 при инициализации типа с помощью автозапуска - PullRequest
0 голосов
/ 11 января 2012

Я использую Autofac для регистрации контроллеров моего веб-приложения asp.net mvc 3.На данный момент я должен загрузить библиотеки DLL, которые содержат контроллеры (плагины), и после этого я буду регистрировать типы.Теперь, проблема возникла из-за того, что у меня есть класс PluginLoader, который будет обрабатывать все вещи от загрузки сборки до регистрации типов.Этот класс также зарегистрирован в контейнере autofac.Проблема в том, как я могу использовать этот класс, если перед его разрешением я должен собрать контейнер?Я имею в виду, я создаю контейнер autofac, я разрешаю класс PluginLoader, я вызываю метод, который сканирует сборку и находит контроллеры, но затем контейнер уже собран ...

EDIT 1

PluginManager - это базовый класс, который управляет всеми плагинами.Это зависит от класса PluginLoader, который в основном загружает сборки с помощью метода Assembly.Load и сканирует библиотеки DLL для поиска контроллеров MVC.Эти классы зарегистрированы как синглтон в контейнере autofac.Теперь PluginLoader должен также зарегистрироваться на контроллерах autofac.Но перед вызовом метода, который делает это, я должен разрешить класс PluginManager из контейнера, и это проблема.Кажется, «круговая зависимость» или что-то подобное.В то время, когда я разрешаю PluginManager, контейнер уже собран

1 Ответ

0 голосов
/ 16 января 2012

PluginLoader звучит так, как будто это часть вашего загрузчика - попробуйте сделать PluginLoader производным от Module (класс Autofac), а затем зарегистрируйте модуль в контейнере. Модуль может инкапсулировать логику загрузки плагинов в методе Load().

...