2
當我的應用程序初始化時,我想創建一個任何MVC操作的註冊表,該操作的方法具有一定的CustomAttribute。我希望這個註冊表跟蹤MVC區域,控制器和操作。我可能要求添加屬性的人指定此信息,但它似乎應該能夠根據MethodInfo找出此信息:基本上與ActionLink方法調用時發生的情況相反。我怎樣才能做到這一點?如何從操作的MethodInfo獲取MVC操作信息?
當我的應用程序初始化時,我想創建一個任何MVC操作的註冊表,該操作的方法具有一定的CustomAttribute。我希望這個註冊表跟蹤MVC區域,控制器和操作。我可能要求添加屬性的人指定此信息,但它似乎應該能夠根據MethodInfo找出此信息:基本上與ActionLink方法調用時發生的情況相反。我怎樣才能做到這一點?如何從操作的MethodInfo獲取MVC操作信息?
在整個裝配體中搜索每個Controller
,然後搜索所有方法以找到具有特定屬性的方法。
// current assembly -> all types that have basetype controller -> grab methods
foreach(var type in System.Reflection.Assembly.GetCallingAssembly().GetTypes().Where(t=>
typeof(Controller).IsAssignableFrom(t))))
{
foreach(var methodInfo in type.GetMethods())
{
if (methodInfo.GetCustomAttributes(typeof(MyAttribute), false).Count() > 0)
{
var action = methodInfo.Name;
var controller = type.Name;
}
}
}
這是我在這裏要問的「//做點什麼」。假設您有MethodInfo:現在您如何獲得MVC區域,控制器和操作名稱? – StriplingWarrior 2010-09-14 16:25:27
更改了我的示例。雖然不知道這個區域:一個區域與控制器的動作沒有緊密聯繫,或者是什麼?如果有一個區域包含控制器名稱和變量中的操作,我想你想查看'RouteCollection'。 – 2010-09-14 16:36:31
我建議使用區域問題的命名空間,因爲它很可能是那些區域控制器共享一個公共命名空間。 – eglasius 2010-09-14 22:04:43