fonction décorateurs c#
Existe-t-il un c# analogique pour les décorateurs de fonctions de Python? On dirait que c'est faisable avec les attributs et le cadre de réflexion, mais je ne vois pas comment remplacer les fonctions à l'exécution.
décorateurs Python généralement travailler de cette façon:
class decorator(obj):
def __init__(self, f):
self.f = f
def __call__(self, *args, **kwargs):
print "Before"
self.f()
print "After"
@decorator
def func1():
print "Function 1"
@decorator
def func2():
print "Function 2"
appeler func1 et func2 donnerait alors
Before Function 1 After Before Function 2 After
l'idée est que les décorateurs me laisseront facilement ajouter des tâches communes aux points d'entrée et de sortie de multiples fonctions.
3 réponses
La façon dont j'y parvenir est par le biais de AOP frameworksChâteau Dynamique Proxy, Spring.NET ou encore Politique D'Injection Bloc D'Application.
Vous pouvez le faire en utilisant Post Sharp. Consultez la vidéo de démonstration pour obtenir des instructions.
vous pouvez en quelque sorte y parvenir en "ContextBoundObject" dans le cadre de .NET. mais il est un peu alambiqué car il utilise essentiellement l'infrastructure remoting.Net pour intercepter les appels de méthode. (la charge d'exécution est minimale si vos appels sont dans le même domaine d'application mais dans un "contexte"différent). donc le mieux approches seraient ceux mentionnés ci-dessus par les autres affiches.