1

我在工作中将 MEF 用于几个项目,我只是在业余时间盯着 Monorail 玩弄。我想知道是否有任何方法可以使用 MEF 加载 Monorail 使用的控制器。Monorail 似乎在您在 Web.Config 中列出的程序集中寻找控制器:

<controllers>
  <assembly>my.assembly</assembly>
</controllers>

有没有一种方法可以让“my.assembly”使用 MEF 加载更多控制器?我不得不承认我没有理由需要这个功能,但我只是在尝试!

4

2 回答 2

2

Monorail 是一个非常可扩展的框架。几乎所有东西都由可以轻松切换到其他东西的服务提供。例如,IoC 集成非常简单,因为您可以切换创建控制器、过滤器、助手和所有其他 MonoRail 实体的服务。

具体示例:将温莎集装箱集成到单轨列车中

现在这设置了温莎提供的几乎所有单轨列车。如果您只希望 MEF 提供控制器,那么工作就更少了。

我对 MEF 的工作知识很少,所以可能有点偏离,但你会得到大致的想法:

  1. 使用 MEF 发现机制来定位控制器类型,然后将控制器类型添加到默认IControllerTree服务。看看MonoRailFacility.cs灵感。
  2. 实现MefControllerFactory : IControllerFactory将在需要时使用 MEF 实例化控制器的 a。灵感在WindsorControllerFactory.cs
于 2010-09-16T07:06:15.010 回答
1

这还不是您可以使用的东西,但请查看 Hammett 的博客文章,他其中谈到了他为 MonoRail 3.0 设计的原型(包括默认情况下对 MEF 的支持)。

于 2010-09-16T01:28:18.457 回答