[C#] Обращение к аттрибутам
В общем есть некоторый кастомный аттрибут, который я закрепляю за методами.
Затем мне нужно этот атрибут достать. Но в чем проблема - этот атрибут может встретиться где угодно.
Сначала я подумал - да чего там, сейчас мигом это исправлю
И написал вот такой код
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type t in a.GetTypes())
{
var methods = t.GetMethods();
foreach (var method in methods)
{
var attr = method.GetCustomAttribute(typeof(MyAttribute));
}
}
}Но это, вызывается целых 5 секунд. Такого я естественно позволить не могу.
И я вот подумал - а как тогда вызываются всякие эти системные атрибуты? Ведь некоторые из них так же действуют "везде", но почему то от них не возникает тормозов.
В общем каким способом я могу значительно уменьшить время на вычисление методов, имеющих мой аттрибут?
Смотрите также:
Комментарии
- 1 (Текущая страница)
- 2
Может расскажешь конечную цель? И тогда я смогу помочь. Вообще обычно атрибуты достаются непосредственно у известного типа, а не проходятся по всей сборке
В общем цель - помеченные атрибутом методы использовать в определенном месте. Это пожалуй всё. Методы могут находиться в пределах любой сборки любого класса.
Если еще точнее - для редактора сценариев в атрибуте помечаю сепаратор и название. А дальше подтягиваю эти данные где мне нужно. Атрибуты самый удобный способ пометить такие вещи. Отдельный класс не подходит, ибо пакую в отдельную сборку свой плагин, а это все будет ущербно выглядеть.
alexprey, я его и кеширую. Я вообще всегда кеширую данные, доставаемые иначе чем индексно из массива. Но первое обращение происходит очень долго. Даже кешируя это выглядит не красиво, ибо на 4 секунды все подвисает.
Extravert, а ты смотрел какие сборки он возвращает, мб стоит из этого списка исключить системные? И еще наверное все же попробовать использовать не GetTypes а GetExportedTypes
alexprey, вполне даже ожиданно. У меня программа перебирала все классы внутри каждой сборки. А меньше сборок - меньше классов.
- 1 (Текущая страница)
- 2
Возможность добавлять комментарии была ограничена


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>