Собственно интересует сабж. И ещё вопрос: как проверить наличие атрибута?
Смотрел исходники макросов, примеров не нашел.
Здравствуйте, Dufrenite, Вы писали:
D>Смотрел исходники макросов, примеров не нашел.
Метод GetModifiers у TypeInfo/TypeBuilder и других реализаций IMember. Возвращает инстанс класса Modifiers, его реализацию смотреть в ncc/parsing/ast.n. В исходниках макросов это точно используется, поищи получше.
D>Собственно интересует сабж.
D>И ещё вопрос: как проверить наличие атрибута?
Методы класса Nemerle.Compiler.Modifiers:
public AddCustomAttribute (expr : Parsetree.PExpr) : void
public FindAttributeWithArgs (looking_for : TypeInfo, env : GlobalEnv) : option [PT.PExpr * list [PT.PExpr]]
public AttributeTypes(env : GlobalEnv) : list[TypeInfo]
public FindAttribute (looking_for : TypeInfo, env : GlobalEnv) : option [PT.PExpr]
Здравствуйте, Vermicious Knid, Вы писали:
VK>Метод GetModifiers у TypeInfo/TypeBuilder и других реализаций IMember. Возвращает инстанс класса Modifiers, его реализацию смотреть в ncc/parsing/ast.n. В исходниках макросов это точно используется, поищи получше.
Огромное спасибо! Даже пример есть поиска атрибута:
def add_attr (m) {
unless (m.GetCustomAttributes ().Exists (
_ is <[ Nemerle.Internal.Extension () ]>))
m.AddCustomAttribute (<[ Nemerle.Internal.Extension () ]>)
}
Порадовало применение оператора is, получается, что это вроде как сопоставление с образцом в миниатюре
.
Здравствуйте, Dufrenite, Вы писали:
D>Огромное спасибо!
Спасибо, тем более огромное, лучше выражать в виде оценки (3 в данном случае).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Здравствуйте, VladD2, Вы писали:
VD>Спасибо, тем более огромное, лучше выражать в виде оценки (3 в данном случае).
Без проблем. Правила форума надо соблюдать
Здравствуйте, Dufrenite, Вы писали:
D>Без проблем. Правила форума надо соблюдать
Это не правило, а полезная фича. При этом и форум незначащими сообщениями не захламляется, и отвечавшему вдвойне приятно, так как его рейтинг поднимается.