【问题标题】:Importing MEF-Plugins into MVC Controllers将 MEF 插件导入 MVC 控制器
【发布时间】:2010-05-17 13:40:21
【问题描述】:

有几个使用 MEF 将整个控制器/视图包插入 MVC 应用程序的示例,但我没有找到一个使用 MEF 插入其他控制器使用的功能部件的示例。

例如,考虑一个具有简单界面的 NewsService,例如

interface INewsService
{
    List<NewsItem> GetAllNews();
}

它可以在任何他想要的地方获取新闻,并在 NewsItems 列表中返回它们。我的页面应该加载一个导出的 INewsService 并在页面上显示新闻。

但是有问题。我不能只在控制器中使用 [Import],因为它们只是在需要时创建的。

编辑:(将它们导入主 MVCApplication 类不起作用,因为我无法从控制器访问它。) 我想我找到了一种通过 HttpContext.ApplicationInstance 访问主应用程序的方法。但是这个实例中的 Service 对象是空的,虽然它是在 Application_Start() 方法中成功创建的。知道为什么吗?

那么,我如何从控制器中访问 NewsService?

提前致谢, 标记

【问题讨论】:

    标签: model-view-controller import service plugins mef


    【解决方案1】:

    您需要创建一个 MEF ControllerFactory,它将使用 MEF CompositionContainer 创建一个满足其导入的控制器。然后你可以在你的控制器上放一个 INewsService 导入。

    这是一个sample,它展示了您如何做到这一点。

    编辑:这是另一个sample,看起来有点简单。

    【讨论】:

    • 我不喜欢添加自定义 ControllerFactory 的方式,但它似乎是迄今为止唯一好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多