加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – .NET MVC:计算Web应用程序中的Action方法

发布时间:2020-12-16 07:28:40 所属栏目:asp.Net 来源:网络整理
导读:我们有一个巨大的ASP.NET MVC 3应用程序.我们需要计算我们在currentClass是System.Web.Mvc.Controller的类中有多少公共方法. 任何符合此条件的类都将具有“AwesomeProduct.Web”的基本命名空间,但除了这些类可能属于哪个命名空间或者有多少深度级别之外,无法
我们有一个巨大的ASP.NET MVC 3应用程序.我们需要计算我们在currentClass是System.Web.Mvc.Controller的类中有多少公共方法.

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

想出这个的最佳方法是什么?

解决方法

像这样的一些反射和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();

这不适合异步控制器操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读