MonoRail - 获取所有控制器

时间:2010-08-17 08:16:08

标签: castle-monorail

this post松散相关,我需要获取controllers文件夹中所有控制器的列表。我们现在正在试验一些东西。我通过API搜索等没有任何运气。我可以很好地得到当前的控制器,但不幸的是其他控制器。

我必须静态创建一个我想要的实例化控制器列表,如下所示:

public static IList<AbstractHtmlPageController> _controllers = new List<AbstractHtmlPageController>
{
    new HomeController(),
    new UserController()
};

这显然不是一个理想的解决方案。

干杯

1 个答案:

答案 0 :(得分:1)

您可以尝试使用反射(尚未测试):

public static IList<AbstractHtmlPageController> GetControllers()
{
    Assembly
        .GetExecutingAssembly()
        .GetTypes()
        .Where(t => 
            t != typeof(AbstractHtmlPageController) && 
            typeof(AbstractHtmlPageController).IsAssignableFrom(t)
        )
        .Select(t => (AbstractHtmlPageController)Activator.CreateInstance(t))
        .ToList();
}

这种方法的用处非常值得怀疑。在应用程序的生命周期中实例化这样的控制器可能是危险的。不应共享控制器。将控制器的实例化保留到您正在使用的依赖注入框架中。它们的寿命应该非常短,最好限于当前用户的要求。