我正在尝试使用MEF和MVC构建可插拔架构。我有MVC应用程序,它将负责加载模块(其他mvc项目)。我的想法是将模块复制粘贴到某个文件夹中,然后弹出模块。
无论如何,我想从模块组件中获取导出的(就MEF Export而言)API控制器。
[Export("TestModuleApi", typeof(IHttpController))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class TestModuleApiController : ApiController
{
[HttpGet]
public object Get()
{
return "HomeApi";
}
}
我无法找到有关如何实现这一目标的更多信息。
然而,我能够得到正常的'具有IControllerFactory
自定义实现的mvc控制器,在CreateController
方法中,我从CompositionContainer
的导出对象中获取所请求的控制器。
但IControllerFactory
仅提供IController
个对象,而不是IHttpController
(ApiController
)。
我试图实现自定义IHttpControllerActivator
但没有成功。当我尝试浏览模块中的网址(例如api\TestModuleApi\Get
)时,我收到的是404,而我甚至没有进入自定义激活器的Create
方法。
任何帮助将不胜感激。