Definirea și utilizarea atributelor personalizate

Crearea de atribut începe cu crearea unei clase care implementează atribut. Această clasă trebuie să fie moștenită de orice atribut de clasă. Atributul de clasă trebuie să aibă întotdeauna publicul Modificatorul de acces. Atributul de clasă este întotdeauna în mod direct sau indirect, moștenește de la Sistemul .Attribute.

[AttributeUsage (AttributeTargets.All, Mostenire = false,

Clasa Sistemul .AttributeUsageAttribute conține trei membri, care sunt importante pentru crearea de atribute definite de utilizator. Acest câmp: AttributeTargets. Moștenit și AllowMultiple.

In exemplul anterior se utilizează AttributeTargets.All pavilion. Acest steag înseamnă că acest atribut poate fi aplicat la orice elemente de program. Pe de altă parte, steagul poate fi setat AttributeTargets.Class. Aceasta înseamnă că atributul se aplică numai clase, sau AttributeTargets.Method - clase, metode de interfețe. În mod similar, pot fi folosite atributele de utilizator.

Puteți utiliza, de asemenea, mai multe instanțe atribut AttributeTargets. Următorul exemplu arată modul în care atributul personalizat poate fi aplicat la orice clasă sau metodă:

Moștenit proprietate specifică dacă un atribut moștenit clase de moștenitori, cărora li se aplică acest atribut. Această proprietate poate avea două valori: adevărat sau fals. În mod implicit, Mostenire = true.

Această proprietate indică dacă atributul poate fi aplicat în mod repetat pentru același element. Implicit este falsă. ceea ce înseamnă că - atribut fi utilizat doar o singură dată.

Mai jos este un exemplu de a crea propriul atribut.

[AttributeUsage (AttributeTargets.All, Mostenire = false,

Clasa de TestAttribute publică: System.Attribute

Numele șir privat;

Kod private int;

După cum se poate observa, atributul TestAttribute este un descendent al clasei System .Attribute. Înainte de a defini un nou atribut TestAttribute vom vedea o linie care definește sfera de aplicare a acestui atribut

[AttributeUsage (AttributeTargets.All, Mostenire = false,

În continuare, vom defini atributul numele nostru intern variabilă de tip șir și un kod int.

Numele proprietății Apoi, în atributul clasă este înregistrată este read-only și a proprietății Kod pentru citire și scriere. Proprietățile sunt determinate, în cazul în care este necesar să se treacă parametrul numit în constructor sau pur și convenabil primi câmpurile de valori ale atributelor.

Apoi, parametrul de construcție numele de tip string. În constructor, înregistrăm valoarea în câmpul de nume.

Kituri de clasa atributivă poate fi supraîncărcat pentru a primi diferite combinații de parametri. În cazul în care proprietățile de clasă atributive sunt definite, în acest exemplu, numele și kod. pentru a inițializa proiectantul poate utiliza o combinație de parametri de poziție și numit. De obicei, toți parametrii necesari sunt declarate ca pozițional și opțional ca nume.

După crearea unei clase de atribut, vom aplica la alte clase de test. Pentru a face acest lucru în cod, avem nevoie pentru a crea o instanță de TestAttribute atribut imediat înaintea clasei de test. În cazul nostru, există două opțiuni specificați atributul - singurul parametru pozitional

sau parametrii poziționali și numele

[TestAttribute ( "sfinfleascæ Word"), Kod = 123]

De exemplu, utilizați cea mai recentă versiune a atributului. Ca rezultat, vom obține următorul text

// Utilizarea atributului clasei

[TestAttribute ( "Hallow Word", Kod = 123)] // Chemat constructor atribut

public static void getAttribute (tip t)

// Ia-și proprietăți atribut TestAttribute afișarea de

Testul de clasă în metoda getAttribute a consolei afișează proprietatea Numele acestui atribut. Pentru a face acest lucru, am folosit o metoda statica GetCustomAttribute clasa atribut. Această metodă are ca tip de parametri de test. la care atributul, și utilizat de fapt atributul TestAttribute. Metoda returneaza un atribut exemplu, care este utilizat pentru a obține valoarea proprietăților Numelui.

Metoda getAttribute de apel într-o metodă statică principală.

Rezultatul programului va fi de ieșire la consolă, cuvintele „Sfințiți Cuvântul“.