Могу ли я загружать контроллеры в монорельсе, используя MEF?
-
03-10-2019 - |
Вопрос
Я использовал MEF для нескольких проектов на работе, и я просто смотрел во внимание с монорельсом в свободное время. Мне было интересно, если бы я мог использовать MEF для загрузки контроллеров, которые использует монорельсы. Монорельс, по-видимому, ищет контроллеры в узлах, которые вы перечислите в Web.config:
<controllers>
<assembly>my.assembly</assembly>
</controllers>
Есть ли способ 'My.ashybly' Может тогда использовать MEF, чтобы загрузить больше контроллеров? Я должен признать, что нет, хотя из причины, по которой мне понадобится эта функциональность, но я просто пробую вещи!
Решение
Монорельс - очень расширяемая структура. Почти все предоставляется услугой, которую можно легко переключиться с чем-то другим. Например, интеграция IOC довольно проста, так как вы можете переключать сервисы, которые создают контроллеры, фильтры, помощники и все остальные организации монореил.
Бетонный пример: Интеграция виндзорского контейнера в монорелью
Теперь это устанавливает почти все в монорельсе, которое будет предоставлено Windsor. Если вам нужно только контроллеры, которые будут предоставлены MEF, есть еще меньше работы.
У меня очень мало работающих знаний МЭФ, так что это может быть немного, но вы получите общую идею:
- Используйте механизмы Discovery Mef, чтобы найти типы контроллеров, затем добавить типы контроллеров по умолчанию
IControllerTree
оказание услуг. заглядыватьMonoRailFacility.cs
для вдохновения. - Реализовать А.
MefControllerFactory : IControllerFactory
Это будет использовать MEF для экземпляров контроллеров при необходимости. Вдохновение вWindsorControllerFactory.cs
Другие советы
Это не то, что вы можете использовать еще, но взглянуть на блог Hammett здесь, Где он говорит о том, что он является прототипом для монорельса 3.0 (включая поддержку MEF по умолчанию).