Спецификация атрибутов

Спецификация атрибутов описывает задание определенных ранее атрибутов к определению. Атрибуты задаются посредством секций атрибутов. Секция атрибутов состоит из пары квадратных скобок, которые обрамляют список атрибутов разделенных запятыми. Порядок в котором производится задание атрибутов является несущественным.

global-attributes:

global-attribute-sections

global-attribute-sections:

global-attribute-section

global-attribute-sections  global-attribute-section

global-attribute-section:

[   global-attribute-target-specifier   attribute-list   ]

global-attribute-target-specifier:

global-attribute-target   :

global-attribute-target:

Assembly

Module

attributes:

attribute-sections

attribute-sections:

attribute-section

attribute-sections   attribute-section

attribute-section:

[   attribute-target-specifieropt  attribute-list   ]

[   attribute-target-specifieropt  attribute-list  ,  attribute-target-specifieropt  attribute-list   ]

attribute-target-specifier:

    attribute-target   :

attribute-target:

Field

Event

Method

Param

Property

Return

Type

attribute-list:

attribute

attribute-list   ,   attribute

attribute:

attribute-name   attribute-argumentsopt

attribute-name:

type-name

attribute-arguments:

(   positional-argument-listopt   )

(   positional-argument-list   ,   named-argument-list   )

(   named-argument-list   )

positional-argument-list:

positional-argument

positional-argument-list   ,   positional-argument

positional-argument:

attribute-argument-expression

named-argument-list:

named-argument

named-argument-list   ,   named-argument

named-argument:

identifier   :=   attribute-argument-expression

attribute-argument-expression:

expression

Описание атрибута состоит из его имени и опционального списка позиционных и именованных параметров. Позиционные параметры (если таковые имеются) должны идти перед именованными. Порядок именованных атрибутов не имеет значения. Имя атрибута идентифицирует соответствующий ему класс-атрибут. При отсутствии класса-атрибута с таким именем возникает ошибка компиляции.

Также для атрибута может быть указан спецификатор цели атрибута, явно указывающий к чему именно относится атрибут.

Примечание. Если наименование спецификатора цели атрибута совпадает с ключевым словом, то перед ним необходимо указать символ «@».

По соглашению наименования классов-атрибутов завершаются суффиксом Attribute. Имя атрибута может содержать этот суффикс, либо он может быть опущен. Если существуют классы-атрибуты соответствующие как имени атрибута с суффиксом, так и без суффикса, то возникает ошибка компиляции.

Является ошибкой компиляции применение одноразового атрибута к декларации более чем один раз.

Выражение E может быть использовано в качестве значения параметра в том случае если выполняются все последующие условия:

Пример

Пример использования пользовательского класса-атрибута приведен в описании параметров атрибутов.

См.также:

Атрибуты