我可以使用MEF在Monorail中加载控制器吗?

时间:2010-09-15 22:36:28

标签: c# mef castle-monorail

我在工作中使用了MEF进行了一些项目,我只是在业余时间盯着单轨列车搞砸了。我想知道是否有任何方法可以使用MEF来加载Monorail使用的控制器。 Monorail似乎在Web.Config中列出的程序集中寻找控制器:

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

'my.assembly'是否可以使用MEF加载更多控制器?我不得不承认我没有理由我需要这个功能,但我只是想尝试一下!

2 个答案:

答案 0 :(得分:2)

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

具体示例:Integrating Windsor container into Monorail

现在这几乎是由温莎提供的单轨列车中的所有东西。如果你只想让MEF提供控制器,那么工作就更少了。

我对MEF的工作知识很少,所以它可能有点偏差,但你会得到一般的想法:

  1. 使用MEF发现机制查找控制器类型,然后将控制器类型添加到默认的IControllerTree服务。看看MonoRailFacility.cs的灵感。
  2. 实现一个MefControllerFactory : IControllerFactory,它将在需要时使用MEF实例化控制器。灵感来自WindsorControllerFactory.cs

答案 1 :(得分:1)

这不是你可以使用的东西,但是看看Hammett的博客文章here,在那里他谈到他正在为MonoRail 3.0做什么原型(默认情况下支持MEF)。