/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PABCNetHelp/LangGuide/Classes/attributes.html
57 строк
4 KB
samuraiGH
adding working-tree-encoding attribute (#3325)
07 ноя 2025, 16:12
Не верифицирован
07 ноя 2025, 16:12
cf1fd29
Код
Авторство
О чём код?
<html> <head> <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> <param name="Keyword" value="Attribute"> <param name="Keyword" value="Атрибут"> </object> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> <link rel="StyleSheet" href="../../default.css"> </head> <body> <H1>Атрибуты</H1> <p>В языке имеется ограниченное число стандартных атрибутов, задаваемых ключевыми словами - например: атрибуты уровня доступа public, private и protected, атрибуты static, virtual и override для методов. </p> <p>Пользовательские атрибуты (далее просто атрибуты) - специальные языковые конструкции, позволяющие помечать классы, методы, подпрограммы, параметры некоторым именем (возможно с параметрами).</p> <p>Например, для механизма сериализации класс помечается атрибутом [Serializable], а поля, которые не следует сериализовывать, атрибутом [NonSerialized]. При Unit-тестировании тестовый метод помечается атрибутом [Test] или атрибутом [TestCase]. Распознаются атрибуты методом отражения (рефлексии).</p> <p>Атрибут - это обычный класс, унаследованный от System.Atribute. Например: </p> <blockquote> <p><code><b>type </b>AuthorAttribute = <strong>class</strong>(System.Attribute)<br> <strong>auto</strong> property Name: string;<br> <strong>constructor</strong> (n: string);<br> <strong>begin</strong><br> name := n;<br> <strong>end</strong>; <strong><br>end</strong>;</code></p> </blockquote> <p>Следует обратить внимание, что класс атрибута принято оканчивать на <code> Attribute</code>.</p> <p>При пометке сущности атрибутом имя атрибута заключается в квадратные скобки. Конструктор атрибута предоставляет также возможность использовать атрибуты с параметрами. Например, можно пометить класс атрибутом <code>AuthorAttribute</code>. </p> <blockquote> <p><code>[Author('Alex')]<b><br>type </b>My = <strong>class</strong><br> // ...<strong><br> end</strong>;</code></p> </blockquote> <p>Следует обратить внимание, что окончание <code>Attribute</code> можно не указывать.</p> <p>Распознать, помечен ли данный класс атрибутом, можно, используя отражение: </p> <blockquote> <p><code><strong>begin</strong> <br> <strong>var</strong> t := typeof(My); <br> <strong>var</strong> attrs := t.GetCustomAttributes(false); <br> <strong>foreach</strong> <strong>var</strong> attr <strong>in</strong> attrs <strong>do</strong> <br> <strong>if</strong> attr <strong>is</strong> AuthorAttribute (<strong>var</strong> auth) <strong>then</strong> <br> Print(auth.Name); <br><strong>end</strong>.</code></p> </blockquote> <p>След</p> </body> </html>