Время выполнения методов отслеживания

Я пытаюсь «внедрить» пользовательские методы трассировки в мое приложение.

Я хочу сделать его максимально элегантным, не внося изменений в большую часть существующего кода, и имею возможность легко включать / отключать его.

Одним из решений, о котором я мог подумать, было бы создание пользовательскихAttribute который я прикреплю к методам, которые я хочу отследить.

Основная идея:

public class MethodSnifferAttribute : Attribute
{
    private Stopwatch sw = null;

    public void BeforeExecution()
    {
        sw = new Stopwatch();
        sw.Start();
    }
    public void ExecutionEnd()
    {
        sw.Stop();
        LoggerManager.Logger.Log("Execution time: " + sw.ElapsedMilliseconds);
    }
}

public class MyClass
{
    [MethodSniffer]
    public void Function()
    {
        // do a long task
    }
}

Существуют ли какие-либо существующие.NET атрибуты, которые обеспечивают обратные вызовы, когда метод вызывается / заканчивается?

Ответы на вопрос(2)

Ваш ответ на вопрос