Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч


Создание пользовательских атрибутов


Download 2.46 Mb.
bet79/91
Sana19.10.2023
Hajmi2.46 Mb.
#1709453
TuriУчебно-методический комплекс
1   ...   75   76   77   78   79   80   81   82   ...   91
Bog'liq
Язык программирования 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:
1   ...   75   76   77   78   79   80   81   82   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling