获取所有控制器及其公共ActionResults

时间:2017-02-17 12:22:13

标签: c# asp.net-mvc reflection

我有以下代码当前正在工作,它返回一个返回ActionResult的所有公共方法的列表以及它们各自控制器的名称。那就是:

  

[{Controller =“ControllerName”,Action =“ActionName”},{...},{...}   ...]

我试图找出如何调整这个以获取所有操作结果的名称及其各自的控制器对象,如下所示:

  

[{Controller = {ControllerObject},Action =“ActionName”},{...},{...}   ...]

任何人都知道如何实现这一目标?

Assembly asm = Assembly.GetAssembly(typeof(MyDLL.MvcApplication));

var controllerActionList = asm.GetTypes()
    .Where(type => typeof(Controller).IsAssignableFrom(type))
    .SelectMany(type => type.GetMethods())
    .Where(
        m => m.IsPublic && m.ReturnType.Name == "ActionResult")
    .Select(x => new { Controller = x.DeclaringType.Name, Action = x.Name })
    .ToList();

0 个答案:

没有答案
相关问题