Атрибуты
Материал из Вики проекта PascalABC.NET
В данном примере иллюстрируется создание пользовательского атрибута, пометка этим атрибутом класса и вывод значения атрибута для нескольких классов (используется механизм рефлексии)
uses System; type Author = class(Attribute) // определение класса атрибута private _name: string; public constructor (name: string); begin _name := name; end; property Name: string read _name; end; [Author('Иванов И.И.')] // пометка класса атрибутом MyClass=class procedure Print(); begin write('MyClass'); end; end; [Author('Петров П.П.')] MyClass1=class procedure Print(); begin write('MyClass1'); end; end; // Вывод информации об авторе для данного типа. Используется механизм рефлексии procedure PrintAuthorInfo(t: System.Type); begin write('Информация об авторе для типа ', t.Name,': '); var attrs: array of Attribute := Attribute.GetCustomAttributes(t); // получение атрибутов с помощью рефлексии foreach attr: Attribute in attrs do if attr is Author then begin var a := Author(attr); writeln(a.Name); end; end; begin PrintAuthorInfo(typeof(MyClass)); PrintAuthorInfo(typeof(MyClass1)); PrintAuthorInfo(typeof(integer)); end.
