Tiempo de ejecución de métodos de rastreo
Estoy tratando de "inyectar" métodos de rastreo personalizados en mi aplicación.
Quiero hacerlo lo más elegante posible, sin modificar gran parte del código existente, y tengo la posibilidad de habilitarlo / deshabilitarlo fácilmente.
Una solución que podría pensar sería crear una costumbreAttribute
que lo adjuntaré a los métodos que quiero rastrear.
Idea básica:
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
}
}
¿Hay alguna existente.NET
atributos que proporcionan devoluciones de llamada para cuando se llama / finaliza un método?