2

我正在尝试使用 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方法。

任何帮助将不胜感激。

4

0 回答 0