Comment vérifier si la méthode a un attribut

J'ai un exemple de classe

public class MyClass{

    ActionResult Method1(){
        ....
    } 

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

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

}

Maintenant ce que je veux, c'est d'écrire une fonction qui renvoie true/false qui peut être exécuté comme ce

var controller = new MyClass();

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

Je suis arrivé au point où

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

serait travailler pour Method3. Maintenant, comment puis-je le faire générique en sorte que ça va prendre des chaînes et des classes en tant que paramètres ainsi ?

  • Voulez-vous vérifier si oui ou non la classe, une méthode ou une propriété possède ces attributs à l'intérieur d'une méthode générique?
  • Est-ce que vous voulez simplement savoir si une méthode a un certain type de l'attribut appliqué sur elle?
  • Je veux vérifier si la méthode a un ensemble d'attributs mais je ne veux pas passer un nom de méthode comme une chaîne de caractères.
InformationsquelleAutor 4rchie | 2012-01-11