Как проверить, есть ли у метода атрибут

У меня есть пример класса

public class MyClass{

    ActionResult Method1(){
        ....
    } 

    [Authorize]
    ActionResult Method2(){
       ....
    }

    [Authorize]    
    ActionResult Method3(int value){
       ....
    }

}

Теперь я хочу написать функцию, возвращающую истину / ложь который может быть выполнен следующим образом

var controller = new MyClass();

Assert.IsFalse(MethodHasAuthorizeAttribute(controller.Method1));
Assert.IsTrue(MethodHasAuthorizeAttribute(controller.Method2));
Assert.IsTrue(MethodHasAuthorizeAttribute(controller.Method3));

Я дошел до того, что

public bool MethodHasAuthorizeAttribute(Func<int, ActionResult> function)
{
    return function.Method.GetCustomAttributes(typeof(AuthorizeAttribute), false).Length > 0;
}

будет работать для Method3. Теперь, как я могу сделать этот общий шаблон таким образом, чтобы он также принимал строки и классы в качестве параметров?

24
задан Julian 11 January 2012 в 10:08
поделиться