Атрибуты являются (с некоторыми очень немногими исключениями, такими как [PrincipalPermission]
, который определяется самой средой выполнения) метаданными только ; поэтому не вызывает дополнительный магический вызов кода. Исключением из этого являются такие инструменты, как PostSharp, который во время сборки находит такие атрибуты и вплетает в дополнительный код.
Во всех других случаях вам придется самостоятельно проверять этот атрибут с помощью отражения и писать код для вызова дополнительных методов из атрибутов. Это то, что делает ASP.NET MVC; он определяет ожидаемое семейство атрибутов и вызывает методы базового класса, чтобы вызвать срабатывание фильтров.
Если вы пишете плагин, это может иметь смысл. Если это для специальных методов метода - это не сработает, если вы сами не добавите дополнительный код.
То, что может быть проще, - это написать тип IDisposable
, который записывает прошедшее время, когда он удаляется; тогда вы могли бы сделать:
using(new MyTimer("My label")) {
//... Your method
}
Возможно, небольшое злоупотребление using
, но это должно сработать.