巨大な ASP.NET MVC 3 アプリケーションがあります。クラス内にあるパブリック メソッドの数を数える必要がありcurrentClass is System.Web.Mvc.Controller
ます。
この基準を満たすすべてのクラスは、「AwesomeProduct.Web」の基本名前空間を持ちますが、これらのクラスがどの名前空間に該当するか、または深さのレベルがいくつあるかという保証はありません。
これを理解する最善の方法は何ですか?
巨大な ASP.NET MVC 3 アプリケーションがあります。クラス内にあるパブリック メソッドの数を数える必要がありcurrentClass is 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();
これは、非同期コントローラー アクションには対応していません。