【问题标题】:.NET MVC: Counting Action methods in web application.NET MVC:计算 Web 应用程序中的操作方法
【发布时间】:2013-02-23 08:35:14
【问题描述】:

我们有一个巨大的 ASP.NET MVC 3 应用程序。我们需要计算在currentClass is System.Web.Mvc.Controller 所在的类中有多少公共方法。

任何满足此条件的类都将具有“AwesomeProduct.Web”的基本命名空间,但除了这些类可能属于哪个命名空间或有多少深度级别之外,无法保证。

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 我想使用反射将是您的最佳选择。从这里开始:stackoverflow.com/a/79738/74757。然后通过类类型的集合,您可以再次使用反射来获取公共方法。您还可以更进一步检查任何NonActionAttribute 属性。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

像这样的一些反射和 LINQ 应该这样做

var actionCount = typeof(/*Some Controller Type In Your MVC App*/)
                    .Assembly.GetTypes()
                    .Where(t => typeof(Controller).IsAssignableFrom(t))
                    .Where(t => t.Namespace.StartsWith("AwesomeProduct.Web"))
                    .SelectMany(t => t.GetMethods(BindingFlags.Public | BindingFlags.Instance))
                    .Where(m => typeof(ActionResult).IsAssignableFrom(m.ReturnType))
                    .Where(m => !m.IsAbstract)
                    .Where(m => m.GetCustomAttribute<NonActionAttribute>() == null)
                    .Count();

这不适用于异步控制器操作。

【讨论】:

  • 没有问题,乐于助人:)
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
相关资源
最近更新 更多