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