Programmēšana

Kā strādāt ar atribūtiem C #

Atribūti ir spēcīga C # programmēšanas valodas funkcija, kas var pievienot metadatu informāciju jūsu asamblejām.

Atribūts faktiski ir objekts, kas ir saistīts ar kādu no šiem elementiem: Assembly, Class, Method, Delegate, Enum, Event, Field, Interface, Property un Struct. Tos var izmantot, lai saistītu deklaratīvo informāciju - ja nepieciešams, izmantojiet refleksiju, un vēlāk to varat iegūt izpildes laikā. Citiem vārdiem sakot, jūs varat izmantot atribūtus, lai ievadītu papildu informāciju asamblejām, par kurām, ja nepieciešams, var pieprasīt izpildlaiku, izmantojot refleksiju. Atribūts sastāv no tā nosaukuma un pēc izvēles - parametru saraksta. Atribūta nosaukums atbilst atribūtu klasei.

Varat izmantot atribūtu priekšrocības, lai validētu biznesa objektus savā lietojumprogrammā. Ir divu veidu atribūti - iekšējie un pielāgotie atribūti. Kaut arī pirmais ir pieejams kā .Net ietvara daļa, otro var ieviest, atvasinot klasi no System.Attribute klases. MSDN norāda: "Atribūts ir papildu deklaratīvā informācija, kas norādīta deklarācijai."

Tagad iedziļināsimies kādā kodā. Atribūtu “Novecojis” var izmantot, lai apzīmētu metodi kā novecojušu - tādu, kuru vairs nevajadzētu lietot, jo tā vairs nav vajadzīga vai tai var būt kāda cita alternatīva. Šis koda fragments parāda, kā metodes deklarācijas augšpusē var izmantot atribūtu Novecojis.

[Novecojis ("Šī metode ir novecojusi ...")]

public static void DoSomeWork ()

        {

// Daži kodi

        }

Ja izmantojat šo metodi savā kodā un apkopojat programmu, Visual Studio IDE izvades logā tiks parādīts brīdinājums. Tātad, ja vēlaties, varat ignorēt šo brīdinājumu. Ko darīt, ja vēlaties, lai jūsu izstrādātāji vispār neizmanto šo metodi? Nu, pēc tam jūs varat izmantot otro parametru (lai gan tas nav obligāts), deklarējot atribūtu Novecojis. Šeit ir modificētā DoSomeWork () metodes versija. Šoreiz ievērojiet Būla parametra izmantošanu.

[Novecojis ("Šī metode ir novecojusi ...", taisnība)]

public static void DoSomeWork ()

        {

// Daži kodi

        }                                                                                                                        

Šoreiz nododot “true” kā otro izvēles parametru un sastādot programmu, kods vispār netiks apkopots. Tas ir tas, ko jūs gribējāt darīt, vai ne?

Pielāgoti atribūti

Šajā sadaļā mēs izpētīsim, kā mēs varam ieviest pielāgotus atribūtus. Pielāgoti atribūti ir klases, kas pārmanto System.Attribute klasi. Tātad, lai ieviestu pielāgotu atribūtu klasi, izveidojiet jaunu klasi un atvasiniet to no sistēmas. Atribūtu klase, kā parādīts zemāk.

izmantojot sistēmu;

public class CustomAttribute: Atribūts

{

}

Lai kontrolētu pielāgotu atribūtu lietošanu, varat izmantot klases AttributeUsage priekšrocības. Šajā klasē ir tādi rekvizīti kā ValidOn, AllowMultiple un Inherited, kurus var izmantot, lai kontrolētu pielāgotā atribūta lietošanu.

Šis koda fragments ilustrē mūsu pielāgoto atribūtu klases modificēto versiju. Ievērojiet konstruktora lietojumu, kurš pieņem virkni kā argumentu un piešķir to klases privāto virknes dalībniekam. Tas ir tikai ilustratīviem nolūkiem.

[AttributeUsage (AttributeTargets.All)]

public class CustomAttribute: Atribūts

    {

privāts virknes teksts;

public CustomAttribute (virknes teksts)

        {

this.Teksts = teksts;

        }

public string Teksts

        {

gūt

            {

atgriezt šo.teksts;

            }

komplekts

            {

this.text = vērtība;

            }

        }

    }

Varat arī norādīt atribūtu mērķus, kuriem jāpielieto pielāgotais atribūts. Lūk, kā jūs to varat izdarīt.

[AttributeUsage (AttributeTargets.Class |

AttributeTargets.Constructor |

AttributeTargets.Field |

AttributeTargets.Method |

AttributeTargets.Property,

AllowMultiple = true)]

    public class CustomAttribute: Atribūts

    {

privāts virknes teksts;

public CustomAttribute (virknes teksts)

        {

this.Teksts = teksts;

        }

public string Teksts

        {

gūt

            {

atgriezt šo.teksts;

            }

komplekts

            {

this.text = vērtība;

            }

        }

    }

Tagad varat izmantot atspoguļojumu, lai parādītu visus atribūtus, kas tiek lietoti konkrētam objektam, izmantojot šo koda fragmentu.

MemberInfo memberInfo = typeof (CustomAttribute);

objekta [] atribūti = memberInfo.GetCustomAttributes (true);

for (int i = 0, j = atribūti. Garums; i <j; i ++)

  {

Console.WriteLine (atribūti [i]);

  }

Tagad apsveriet šo klasi, kurā mēs izmantotu mūsu pielāgoto atribūtu.

[CustomAttribute ("Sveika pasaule ...")]

sabiedrības klase SomeClass

{

}

Ievērojiet, kā tiek izmantots pielāgotais atribūts un kā arguments tam tiek nodots teksts. Šis koda fragments parāda, kā var izdrukāt rekvizīta Teksts saturu.

MemberInfo memberInfo = typeof (SomeClass);

objekta [] atribūti = memberInfo.GetCustomAttributes (true);

foreach (objekta atribūts atribūtos)

{

CustomAttribute customAttribute = atribūts kā CustomAttribute;

if (customAttribute! = null)

Console.WriteLine ("Teksts = {0}", customAttribute.Text);

cits

Console.WriteLine ();

}

$config[zx-auto] not found$config[zx-overlay] not found