В Delphi 2010 появились пользовательские атрибуты, которые можно добавить к объявлениям типов и методам. Для каких элементов языка может использоваться пользовательский атрибут?
Примеры, которые я нашел до сих пор, включают объявления классов, поля и методы. (И общие классы AFAIK не поддерживают пользовательские атрибуты).
Некоторые примеры показаны в в этой статье. Похоже, что переменные (внешние по отношению к любому объявлению класса) также могут иметь атрибуты.
На основе этой статьи атрибуты могут использоваться для
- класс и поля и методы записи
- параметры метода
- Свойства
- нелокальные объявления перечисления
- объявления не локальных переменных
Существуют ли другие элементы языка, где могут быть размещены атрибуты?
Обновление: в этой статье указывается, что пользовательские атрибуты могут быть помещены перед свойствами: http://francois-piette.blogspot.de/2013/01/using-custom-attribute-for-data.html
Он содержит этот пример кода:
type
TConfig = class(TComponent)
public
[PersistAs('Config', 'Version', '1.0')]
Version : String;
[PersistAs('Config', 'Description', 'No description')]
Description : String;
FTest : Integer;
// No attribute => not persistent
Count : Integer;
[PersistAs('Config', 'Test', '0')]
property Test : Integer read FTest write FTest;
end;
Я предполагаю, что есть также способ читать атрибуты в аргументах метода, например
procedure Request([FormParam] AUsername: string; [FormParam] APassword: string);