Die Conditional Attribute in .NET ermöglicht es Ihnen, den Aufruf von Methoden zur Kompilierzeit zu deaktivieren. Ich suche nach genau der gleichen Sache, aber zur Laufzeit. Ich habe das Gefühl, dass so etwas in AOP-Frameworks existieren sollte, aber ich kenne den Namen nicht, also habe ich Probleme herauszufinden, ob es unterstützt wird.Kann ich Methodenaufrufe zur Laufzeit mit Attributen bedingt steuern?
So als Beispiel würde Ich mag so etwas wie diese
[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;
}
Also, wo immer im Code tun, es ist ein Aufruf an die M Methode wäre es nennt erst RuntimeConditional und übergibt Bob um festzustellen, ob M ausgeführt werden sollte.
In Ihrem Beispiel, welche Art von Code würde M ausführen? Welche Art von Code würde dazu führen, dass sie nicht ausgeführt wird und was würden Sie stattdessen erwarten? – Stobor
Die RuntimeConditional-Methode würde steuern, ob sie ausgeführt werden würde. Im Moment ist Bob fest codiert, also wird es immer ausgeführt. Die Zeichenfolge Bob in der RuntimeConditional-Methode wird durch Code ersetzt, der aus einem Konfigurationsdatei-/Datenbankfeld abgerufen wird, um zu ermitteln, ob die Methode aufgerufen werden soll oder nicht. – Bob
Sie könnten einfach eine Ausnahme in der OnEntry-Überschreibung des Trace-Attributs auslösen. Nicht ganz das, wonach du gesucht hast, aber es wird deine Methode davon abhalten, ausgeführt zu werden. –