Могу ли я загружать контроллеры в монорельс, используя MEF? - PullRequest
1 голос
/ 16 сентября 2010

Я использовал MEF для нескольких проектов на работе, и в свободное время я просто возился с Монорельсом.Мне было интересно, есть ли способ использовать MEF для загрузки контроллеров, которые использует Monorail.Монорельс, кажется, ищет контроллеры в сборках, которые вы перечисляете в Web.Config:

<controllers>
  <assembly>my.assembly</assembly>
</controllers>

Есть ли способ, что 'my.assembly' может затем использовать MEF, чтобы загрузить большеконтроллеры?Я должен признать, что у меня нет причины, по которой мне нужна эта функциональность, но я просто пробую!

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Монорельс - это очень расширяемый каркас.Почти все обеспечивается службой, которую можно легко переключить с помощью чего-то другого.Например, интеграция IoC довольно проста, так как вы можете переключать службы, которые создают контроллеры, фильтры, помощники и все другие объекты MonoRail.

Конкретный пример: Интеграция контейнера Windsor в монорельс

Теперь это настраивает почти все в монорельсе, которое будет предоставлено Виндзором.Если вы хотите, чтобы контроллеры предоставлялись только MEF, работы еще меньше.

У меня очень мало практических знаний о MEF, так что это может быть немного, но вы получите общее представление:

  1. Используйте механизмы обнаружения MEF для определения типов контроллеров, затем добавьте типы контроллеров в службу IControllerTree по умолчанию.Взгляните на MonoRailFacility.cs для вдохновения.
  2. Реализуйте MefControllerFactory : IControllerFactory, который будет использовать MEF для создания экземпляров контроллеров при необходимости.Вдохновение в WindsorControllerFactory.cs
1 голос
/ 16 сентября 2010

Это еще не то, что вы можете использовать, но посмотрите в блоге Хаммета здесь , где он рассказывает о том, что он создает для MonoRail 3.0 (включая поддержку MEF по умолчанию).

...