Атрибуты

Атрибуты — это дополнительные сведения об элементах программы (классах, мето­дах, параметрах и т. д.). С помощью атрибутов можно добавлять информацию в ме­таданныесборки и затем извлекать ее во время выполнения программы. Атрибут яв­ляется специальным видом класса и происходит от базового класса System.Attribute.

Атрибуты делятся на стандартные и пользовательские. В библиотеке .NET преду­смотрено множество стандартных атрибутов, которые можно использовать в про­граммах. Если всего разнообразия стандартных атрибутов не хватит, чтобы удовле­творить прихотливые требования программиста, он может описать собственные классы атрибутов, после чего применять их точно так же, как стандартные.

При использовании (спецификации) атрибутов они задаются в секции атрибутов, располагаемой непосредственно перед элементом, для описания которого они предназначены. Секция заключается в квадратные скобки и может содержать не­сколько атрибутов, перечисляемых через запятую. Порядок следования атрибу­тов произвольный.

Для каждого атрибута задаются имя, а также необязательные параметры и тип элемента сборки, к которому относится атрибут. Простейший пример атрибута:

[Serializable]

class Monster {

[NonSerialized]

string name;

int health, ammo;

}

Атрибут [Serializable], означающий, что объекты этого класса можно сохранять во внешней памяти, относится ко всему классу Monster. При этом поле name поме­чено атрибутом [NonSerialized], что говорит о том, что это поле сохраняться не должно. Сохранение объектов рассматривалось в главе 10.

Обычно из контекста понятно, к какому элементу сборки относится атрибут, однако в некоторых случаях могут возникнуть неоднозначности. Для их устра­нения перед именем атрибута записывается тип элемента сборки — уточняющее ключевое слово, отделяемое от атрибута двоеточием. Ключевые слова и соответ­ствующие элементы сборки, к которым могут относиться атрибуты, перечислены в табл. 12.3. Таблица 12.3.Типы элемента сборки, задаваемые для атрибутов