Спецификация атрибутов описывает задание определенных ранее атрибутов к определению. Атрибуты задаются посредством секций атрибутов. Секция атрибутов состоит из пары квадратных скобок, которые обрамляют список атрибутов разделенных запятыми. Порядок в котором производится задание атрибутов является несущественным.
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 может быть использовано в качестве значения параметра в том случае если выполняются все последующие условия:
Тип является E типом параметров атрибутов.
Во время компиляции значение E может быть приведено к одной из следующих сущностей:
Константа.
Объект типа System.Type.
Одномерный массив значения типа E.
Пример использования пользовательского класса-атрибута приведен в описании параметров атрибутов.
См.также: