如何从动作的MethodInfo中获取MVC操作信息?

时间:2010-09-14 16:12:46

标签: c# asp.net-mvc

当我的应用程序初始化时,我想创建一个任何MVC操作的注册表,其方法上有一个特定的CustomAttribute。我希望此注册表能够跟踪MVC区域,控制器和操作。我可以要求添加属性的人指定此信息,但似乎我应该能够根据MethodInfo找出这些信息:基本上与调用ActionLink方法时发生的情况相反。我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

在程序集中搜索每个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;
        }
    }
}