Подтвердить что ты не робот

Декораторы функций в С#

Есть ли аналог С# для декораторов функции Python? Похоже, что это возможно с атрибутами и средой отражения, но я не вижу способа заменить функции во время выполнения.

Декораторы Python обычно работают следующим образом:

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"

Вызов func1 и func2 приведет к тому, что

Before
Function 1
After
Before
Function 2
After

Идея заключается в том, что декораторы позволят мне легко добавлять общие задачи на точки входа и выхода из нескольких функций.

4b9b3361

Ответ 2

Вы можете сделать это, используя Опубликовать Sharp. Проверьте инструкции для демонстрации.

Ответ 3

вы можете добиться этого путем "ContextBoundObject" в .NET framework. но он немного запутан, потому что он в основном использует инфраструктуру удаленного доступа .net для перехвата вызовов методов. (служебные данные во время выполнения минимальны, если ваши вызовы находятся в одном домене приложения, но только в разных "контекстах" ). поэтому лучше подходят те, о которых говорили другие плакаты.