Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч
Создание пользовательских атрибутов
Download 2.46 Mb.
|
Язык программирования C#
18.3. Создание пользовательских атрибутов
Пользовательские атрибуты используются для дополнительного документирования сборки. Пользовательские атрибуты – это классы, тем или иным образом наследующие от System.Attribute. Также как и все другие классы, пользовательские атрибуты содержат методы для записи и чтения данных. Объявление пользовательского атрибута само начинается с системного атрибута AttributeUsageAttribute, который задает ключевые характеристики нового класса. Например, он определяет, может ли атрибут наследоваться другими классами, или к каким элементам он может применяться. Атрибут System.AttributeUsageAttribute содержит три члена, которые важны для создания пользовательских атрибутов: AttributeTargets определяет к каким типам данных применим атрибут, Inherited определяет наследуется ли атрибут и AllowMultiple определяет разрешено ли многократное применения атрибута. Существует соглашение об именовании, согласно которому каждый класс атрибут должен оканчиваться суффиксом Attribute, но при использовании атрибута в средах от Microsoft этот суффикс можно опустить. [System.AttributeUsage(System.AttributeTargets.All, Inherited = false, AllowMultiple = true)] public class AuthorAttribute : System.Attribute { private string DeveloperName; public string DeveloperPosition; public int DeveloperLevel; public AuthorAttribute(string Name) { DeveloperName = Name; DeveloperPosition = "Coder"; DeveloperLevel = 0; } public string Name { get { return DeveloperName; } } public string Position { get { return DeveloperPosition; } } public int Level { get { return DeveloperLevel; } set { DeveloperLevel = value; } } } Лист. 9.3 На листинге приведен пример атрибута, который можно использовать для документирования кода внутри компании. Он включает в себя три открытых поля для хранения имени, должности и уровня разработчика. Наш атрибут определен с атрибутом AttributeUsage так, чтобы: 1. его применять к любым конструкциям языка; System.AttributeTargets.All Лист. 9.4 2. его нельзя было наследовать; Inherited = false Лист. 9.5 3. его можно было применять несколько раз к одной конструкции; AllowMultiple = true Лист. 9.6 Определенный нами атрибут имеет один конструктор, который требует только один обязательный параметр – строку. Следовательно, и при использовании атрибута ему необходимо будет передать только один параметр – строку. У атрибута есть два открытых поля: DeveloperPosition и DeveloperLevel, ими можно будет воспользоваться для задания необязательных (именованных) параметров атрибута. Поле DeveloperLevel имеет также связанное с ним свойство Level доступное для записи, этим свойством также можно будет воспользоваться для установки необязательного поля. После инициализации к полям атрибута лучше обращаться по соответствующим свойствам. Download 2.46 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling