Le Conditional Attribute dans .NET vous permet de désactiver l'invocation de méthodes au moment de la compilation. Je cherche essentiellement la même chose, mais au moment de l'exécution. J'ai l'impression que quelque chose comme ça devrait exister dans les frameworks AOP, mais je ne connais pas le nom, donc j'ai du mal à comprendre si c'est supporté.Puis-je conditionnellement contrôler les appels de méthode à l'exécution avec des attributs?
Donc, comme un exemple que je voudrais faire quelque chose comme ça
[RuntimeConditional("Bob")]
public static void M() {
Console.WriteLine("Executed Class1.M");
}
//.....
//Determines if a method should execute.
public bool RuntimeConditional(string[] conditions) {
bool shouldExecute = conditions[0] == "Bob";
return shouldExecute;
}
Alors, où jamais dans le code il y a un appel à la méthode M, il faudrait d'abord appeler RuntimeConditional et passer Bob pour déterminer si M doit être exécuté.
Dans votre exemple, quel type de code rendrait M exécutable? Quel genre de code le ferait ne pas exécuter, et qu'attendriez-vous à la place? – Stobor
La méthode RuntimeConditional contrôlerait si elle serait exécutée. En ce moment, Bob est codé en dur, donc il sera toujours exécuté. La chaîne Bob dans la méthode RuntimeConditional serait remplacée par du code à extraire d'un champ de fichier de configuration/base de données pour voir si la méthode devrait être appelée ou non. – Bob
Vous pouvez simplement lancer une exception dans le remplacement OnEntry de l'attribut Trace. Pas tout à fait ce que vous cherchiez, mais cela arrêtera votre méthode d'exécution. –