Я использовал MEF для нескольких проектов на работе, и я просто смотрел, как возиться с Monorail в свободное время. Мне было интересно, есть ли способ использовать MEF для загрузки контроллеров, которые использует Monorail. Монорельс появляется искать контроллеры в сборках, которые вы перечисляете в Web.Config:Могу ли я загрузить контроллеры в монорельсе с помощью MEF?
<controllers>
<assembly>my.assembly</assembly>
</controllers>
Есть ли способ, что «my.assembly» можно затем использовать MEF, чтобы загрузить несколько контроллеров? Я должен признать, что я не имел причины, по которой мне нужна эта функциональность, но я просто пытаюсь это сделать!
Эта страница (http://blogs.msdn.com/b/hammett/archive/2009/04/23/mef-and-asp-net-mvc-sample.aspx) имеет помог мне в IControllerFactory. Но MonoRailFacility, похоже, получает доступ к IControllerTree по умолчанию через Windsor. Как мне получить доступ к нему? – Tim
Я считаю, что вам нужно получить доступ к каталогу Mef вместо реализации IControllerTree от Windsor для поставки контроллеров. В примере Hammet имеется справочник MecControllerCatalog. У меня не так много опыта работы с Mef, поэтому детали из этих деталей не исходят от меня, извините :) –
MefControllerFactory Hammet выполняет загрузку MEF. Но MR только смотрит в службу IControllerTree по умолчанию для контроллеров. Похоже, я мог либо написать свой собственный сервис IControllerTree, либо добавить контроллеры в существующую. Похож на http://hammett.castleproject.org/?p=159 и раздел «Добавление контроллеров и просмотров во время выполнения» указывает мне в правильном направлении. Если мой MefControllerFactory переопределяет Service (System.IServiceProvider service), тогда я могу просто: IControllerTree tree = service.GetService (typeof (IControllerTree)); tree.AddController («область», «домашний», typeof (MyCoolController)); – Tim