Ich habe eine Klasse, wo jede Methode die gleiche Art und Weise beginnt:Gibt es eine elegante Möglichkeit, jede Methode in einer Klasse mit einem bestimmten Codeblock in C# zu beginnen?
internal class Foo {
public void Bar() {
if (!FooIsEnabled) return;
//...
}
public void Baz() {
if (!FooIsEnabled) return;
//...
}
public void Bat() {
if (!FooIsEnabled) return;
//...
}
}
Gibt es eine nette Art und Weise (und hoffentlich nicht schreibt jedes Mal), um den FooIsEnabled
Teil für jede öffentliche Methode in der Klasse zu verlangen?
Ich überprüfe Is there an elegant way to make every method in a class start with a certain block of code?, aber diese Frage ist für Java, und ihre Antwort verwenden Java Library.
Sie könnten etwas wie DynamicProxy verwenden, um dies zur Laufzeit zu weben. – Sneal
Die Antwort ist ziemlich genau die gleiche wie die Java - Aspekt - orientierte Programmierung (z. B. PostSharp) oder dynamische Proxies. Oder natürlich, Code-Generierung - machen Sie einfach eine einfache T4-Vorlage, um den Proxy zum Zeitpunkt der Kompilierung zu generieren. – Luaan
Es gibt sogar Fody als Alternative ... die Baugruppe nach dem Kompilieren modifizieren. Beachten Sie, dass .NET keine In-Sprache 'java.lang.reflect.Proxy' hat. – xanatos