Los atributos son (con algunas excepciones muy pocas como [PrincipalPermission]
que se detecta por el tiempo de ejecución en sí) metadatos solamente; también lo hace no causa código adicional para ser invocado mágicamente. La excepción a esto es a través de herramientas como PostSharp, que en el tiempo de compilación localiza dichos atributos y teje códigos adicionales.
En todos los demás casos, debería comprobar este atributo por reflexión y escribir código para invocar los métodos adicionales de los atributos. Esto es lo que ASP.NET MVC hace; identifica una familia esperada de atributos y llama a los métodos de la clase base para provocar el disparo de tus filtros.
Si está escribiendo un marco de plugins, esto podría tener sentido. Si se trata de una instrumentación de método ad-hoc, esto no funcionará sin que usted agregue el código adicional usted mismo.
Lo que podría ser más fácil es escribir un tipo IDisposable
que escribe el tiempo transcurrido cuando se desecha; entonces se podría hacer:
using(new MyTimer("My label")) {
//... Your method
}
Tal vez un ligero abuso de using
pero debería funcionar.
PostSharp hace algo así como esto - desafortunadamente no es gratis: http://www.sharpcrafters.com/postsharp –
¿Funcionaría Castle.DynamicProxy aquí? No enviar como respuesta porque esto realmente es una pregunta. – Amy