首页 > 解决方案 > 通过我的应用程序中的控制器获取所有方法

问题描述

当我使用:

var assemblies = GetAssemblies();
IEnumerable<Type> controllers =
      assemblies.SelectMany(a => a.GetTypes().Where(t => t.IsSubclassOf(typeof(ControllerBase))));

foreach (var controller in controllers)
{
     var methods = controller.GetMethods();
     foreach (var methodInfo in methods)
     {
          var returnType = methodInfo.ReturnType;
     }
}

我得到标准方法(“CreatedAtAction”),而不是像(“MyControllerName”)这样的应用程序控制器。

标签: c#asp.net.net

解决方案


我解决了这个问题:

var methods = controller.GetMethods()
                .Where(m => m.GetCustomAttributes(typeof(HttpMethodAttribute), true).Length > 0);

推荐阅读