与this post松散相关,我需要获取controllers文件夹中所有控制器的列表。我们现在正在试验一些东西。我通过API搜索等没有任何运气。我可以很好地得到当前的控制器,但不幸的是其他控制器。
我必须静态创建一个我想要的实例化控制器列表,如下所示:
public static IList<AbstractHtmlPageController> _controllers = new List<AbstractHtmlPageController>
{
new HomeController(),
new UserController()
};
这显然不是一个理想的解决方案。
干杯
答案 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();
}
这种方法的用处非常值得怀疑。在应用程序的生命周期中实例化这样的控制器可能是危险的。不应共享控制器。将控制器的实例化保留到您正在使用的依赖注入框架中。它们的寿命应该非常短,最好限于当前用户的要求。