what usage property net method example custom attributetargets attribute c# .net function time attributes

usage - C#Tiempo de una función usando atributo



system attribute c# example (1)

Quiero cronometrar una función usando un atributo. Me gustaría hacer algo como esto:

[TimeIt] public MyFunc() { //do something ... return; }

tras la ejecución de esta función, si el tiempo tomado por la función está por encima de un umbral, el atributo debe registrar la hora utilizando log4net.

Esto es similar a lo que hace el MVC ActionFilterAttribute, excepto que no quiero usar MVC.


Los atributos son (con algunas muy pocas excepciones, como [PrincipalPermission] que es detectada por el propio tiempo de ejecución) solo metadatos; así que no hagas que el código adicional sea invocado mágicamente. La excepción a esto es a través de herramientas como PostSharp, que en el momento de la construcción localiza dichos atributos y los trama en código adicional.

En todos los demás casos, tendría que verificar este atributo usted mismo a través de la reflexión y escribir código para invocar los métodos adicionales de los atributos. Esto es lo que hace ASP.NET MVC; identifica una familia de atributos esperados y llama a los métodos de clase base para hacer que los filtros se activen.

Si está escribiendo un marco de plugin, esto podría tener sentido. Si es para instrumentación de métodos ad-hoc, esto no funcionará sin que usted agregue el código adicional.

Lo que podría ser más fácil es escribir un tipo IDisposable que escriba el tiempo transcurrido cuando se disponga; entonces podrías hacer

using(new MyTimer("My label")) { //... Your method }

Tal vez un ligero abuso de using pero debería funcionar.