Дефиниране и използване на потребителски атрибути

Създаване на атрибут започва със създаването на един клас, който реализира атрибут. Този клас трябва да бъде наследен от всеки клас атрибут. Атрибутът клас трябва винаги да има модификатори за достъп обществеността. Атрибутът клас винаги е пряко или косвено наследява System .Attribute.

[AttributeUsage (AttributeTargets.All наследена = фалшива,

Клас система .AttributeUsageAttribute съдържа три члена, които са важни за създаването на потребителски дефинирани атрибути. Това поле: AttributeTargets. Наследен и AllowMultiple.

В предишния пример се използва AttributeTargets.All флаг. Този флаг означава, че този атрибут може да се приложи за всички програмни елементи. От друга страна, на знамето може да се настрои AttributeTargets.Class. Това означава, че атрибутът се прилага само за класове, или AttributeTargets.Method - класове, интерфейси методи. По същия начин, могат да се използват потребителски качества.

Можете да използвате няколко екземпляра AttributeTargets приписват. Следващият пример показва как обичай атрибут може да се прилага за всеки един клас или метод:

Наследен имот уточнява дали атрибут наследил класове наследници, към които се прилага този атрибут. Този имот може да има две стойности: истина или лъжа. По подразбиране, Наследено = вярно.

Този имот показва дали атрибут може да се прилага многократно на един и същ елемент. По подразбиране е невярно. това означава - атрибут се използва само веднъж.

По-долу е пример за създаването на своя собствена атрибут.

[AttributeUsage (AttributeTargets.All наследена = фалшива,

обществени клас TestAttribute: System.Attribute

лично име низ;

частен инт код;

Както може да се види, TestAttribute атрибут е наследник на класа System .Attribute. Преди определянето на нов атрибут TestAttribute виждаме линия, която определя обхвата на приложение на този атрибут

[AttributeUsage (AttributeTargets.All наследена = фалшива,

На следващо място, ние определяме нашия атрибут вътрешно име на променлива от тип низ и пад на код.

Тогава в атрибута клас се записва името на собствеността е само за четене и Kod имот за четене и писане. Имотите се определят, ако е необходимо да се премине на име параметър в конструктора или лесно и удобно да получите полета атрибут стойност.

На следващо място, параметър конструктор име тип низ. В конструктора, ние записваме стойността в полето Име.

Комплекти атрибутивна клас може да бъде претоварен да получават различни комбинации от параметри. Ако са определени атрибутивни свойства класа, в този пример, името и код. да се инициализира на дизайнера може да се използва комбинация от позиционни и именувани параметри. Обикновено, всички необходими параметри са обявени за позициониране и по желание като име.

След създаването на клас атрибут, ние го прилага по отношение на другия тест клас. За да направите това в кода, трябва да създадем инстанция на TestAttribute атрибут непосредствено преди клас тест. В нашия случай, има два варианта уточни атрибут - само позиционен параметър

или позиционни и именувани параметри

[TestAttribute ( "Hallow дума"), Kod = 123]

Например можете да използвате най-новата версия на атрибута. В резултат на това, ние получаваме следния текст

// Използването на атрибута на класа

[TestAttribute ( "Hallow думата", Kod = 123)] // наречен атрибут конструктор

публично статично невалидни GetAttribute (тип т)

// Получаване и извеждане на атрибутите свойства TestAttribute

Тестът за клас в GetAttribute метод на конзолата показва името собственост на този атрибут. За да направите това, ние използвахме статичен метод GetCustomAttribute клас атрибут. Този метод се като тип параметри Test. към който атрибута, и действително използвани TestAttribute атрибут. Методът се връща инстанция атрибут, който се използва, за да се получи стойността на името свойства.

GetAttribute метод повикване в статичен метод на Майн.

Резултатът от програмата ще се изведе на конзолата, думите "Hallow Word".