Добавлен Devion
В общем есть некоторый кастомный аттрибут, который я закрепляю за методами.
Затем мне нужно этот атрибут достать. Но в чем проблема - этот атрибут может встретиться где угодно.
Затем мне нужно этот атрибут достать. Но в чем проблема - этот атрибут может встретиться где угодно.
Сначала я подумал - да чего там, сейчас мигом это исправлю
И написал вот такой код
И написал вот такой код
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 секунд. Такого я естественно позволить не могу.
И я вот подумал - а как тогда вызываются всякие эти системные атрибуты? Ведь некоторые из них так же действуют "везде", но почему то от них не возникает тормозов.
И я вот подумал - а как тогда вызываются всякие эти системные атрибуты? Ведь некоторые из них так же действуют "везде", но почему то от них не возникает тормозов.
В общем каким способом я могу значительно уменьшить время на вычисление методов, имеющих мой аттрибут?
Принятый ответ
Extravert, а ты смотрел какие сборки он возвращает, мб стоит из этого списка исключить системные? И еще наверное все же попробовать использовать не GetTypes а GetExportedTypes
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Если еще точнее - для редактора сценариев в атрибуте помечаю сепаратор и название. А дальше подтягиваю эти данные где мне нужно. Атрибуты самый удобный способ пометить такие вещи. Отдельный класс не подходит, ибо пакую в отдельную сборку свой плагин, а это все будет ущербно выглядеть.
Отредактирован Devion