В C# предусмотрено несколько встроенных атрибутов, но три из них имеют особое значение, поскольку они применяются в самых разных ситуациях. Это атрибутыAttributeUsage, ConditionalиObsolete,рассматриваемые далее по порядку.
Атрибут AttributeUsage
Как упоминалось ранее, атрибутAttributeUsageопределяет типы элементов, к которым может быть применен объявляемый атрибут.AttributeUsage— это, по существу, еще одно наименование классаSystem. AttributeUsageAttribute.У него имеется следующий конструктор:
AttributeUsage(AttributeTargets
где
АН
Assembly
Class
Constructor
Delegate
Enum
Event
Field
GenericParameter
Interface
Method
Module
Parameter
Property
ReturnValue
Struct
Два этих значения или более можно объединить с помощью логической операции ИЛИ. Например, для указания атрибута, применяемого только к полям и свойствам, используются следующие значения.
AttributeTargets.Field I AttributeTargets.Property
В классе атрибутаAttributeUsageподдерживаются два именованных параметра. Первым из них является параметрAllowMultiple,принимающий логическое значение. Если это значение истинно, то атрибут может быть применен к одному и тому же элементу неоднократно. Второй именованный параметр,Inherited,также принимает логическое значение. Если это значение истинно, то атрибут наследуется производными классами, а иначе он не наследуется. По умолчанию параметрAllowMultipleпринимает ложное значение(false),а параметрInherited— истинное значение(true).
В классе атрибутаAttributeUsageопределяется также доступное только для чтения свойствоValidOn.Оно возвращает значение типаAttributeTargets,определяющее типы элементов, к которым можно применять объявляемый атрибут. По умолчанию используется значениеAttributeTargets .All.
Атрибут Conditional
АтрибутConditionalпредставляет, вероятно, наибольший интерес среди всех встроенных атрибутов. Ведь он позволяет создавать