Как только класс атрибута будет определен, атрибут можно присоединить к элементу. Атрибут указывается перед тем элементом, к которому он присоединяется, и для этого его конструктор заключается в квадратные скобки. В качестве примера ниже показано, как атрибутRemarkAttributeсвязывается с классом.
[RemarkAttribute("В этом классе используется атрибут.")] class UseAttrib {
// ...
}
В этом фрагменте кода конструируется атрибутRemarkAttribute,содержащий комментарий"В этом классе используется атрибут .11 Данный атрибут затем связывается с классом UseAttrib.
Присоединяя атрибут, совсем не обязательно указывать суффиксAttribute.Например, приведенный выше класс может быть объявлен следующим образом.
[Remark("В этом классе используется атрибут.")] class UseAttrib {
// . . .
}
В этом объявлении указывается только имяRemark.Такая сокращенная форма считается вполне допустимой, но все же надежнее указывать полное имя присоединяемого атрибута, чтобы избежать возможной путаницы и неоднозначности.
Получение атрибутов объекта
Как только атрибут будет присоединен к элементу, он может быть извлечен в других частях программы. Для извлечения атрибута обычно используется один из двух методов. Первый метод,GetCustomAttributes , определяется в классеMemberlnfои наследуется классомТуре.Он извлекает список всех атрибутов, присоединенных к элементу. Ниже приведена одна из его форм.
object[] GetCustomAttributes(bool
Если
Второй метод,GetCustomAttribute , определяется в классеAttribute.Ниже приведена одна из его форм:
static Attribute GetCustomAttribute(Memberlnfо
где
// Получить экземпляр объекта класса MemberInfо, связанного // с классом, содержащим атрибут RemarkAttribute.
Type t = typeof(UseAttrib);
// Извлечь атрибут RemarkAttribute.
Type tRemAtt = typeof(RemarkAttribute);
RemarkAttribute ra = (RemarkAttribute)
Attribute.GetCustomAttribute(t, tRemAtt);