Время выполнения методов отслеживания
Я пытаюсь «внедрить» пользовательские методы трассировки в мое приложение.
Я хочу сделать его максимально элегантным, не внося изменений в большую часть существующего кода, и имею возможность легко включать / отключать его.
Одним из решений, о котором я мог подумать, было бы создание пользовательских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
атрибуты, которые обеспечивают обратные вызовы, когда метод вызывается / заканчивается?