Programovanie

Ako pracovať s atribútmi v C #

Atribúty sú výkonnou funkciou v programovacom jazyku C #, ktorá môže do vašich zostáv pridať informácie o metadátach.

Atribút je vlastne objekt, ktorý je spojený s ktorýmkoľvek z týchto prvkov: zhromaždenie, trieda, metóda, delegát, výčet, udalosť, pole, rozhranie, vlastnosť a štruktúra. Môžu byť použité na priradenie deklaratívnych informácií - tieto informácie môžete získať za behu aplikácie neskôr, ak je to potrebné, pomocou reflexie. Inými slovami, pomocou atribútov môžete do zostáv vložiť ďalšie informácie, ktoré je možné v prípade potreby dotazovať za behu pomocou reflexie. Atribút pozostáva z jeho názvu a voliteľne zo zoznamu parametrov. Názov atribútu zodpovedá triede atribútov.

Atribúty môžete využiť na overenie platnosti obchodných objektov vo vašej aplikácii. Existujú dva typy atribútov - vnútorné a vlastné atribúty. Zatiaľ čo prvý je k dispozícii ako súčasť rámca .Net, druhý je možné implementovať odvodením triedy z triedy System.Attribute. MSDN uvádza: „Atribút je dodatočná deklaratívna informácia, ktorá je určená pre deklaráciu.“

Poďme teraz do nejakého kódu. Atribút Zastarané možno použiť na označenie metódy ako zastaranej - takej, ktorá by sa už nemala používať, pretože už nie je potrebná alebo môže mať inú alternatívu. Nasledujúci úryvok kódu ilustruje, ako môžete nad deklaráciu metódy použiť atribút Zastarané.

[Zastarané („Táto metóda je zastaraná ...“)]

public static void DoSomeWork ()

        {

// Nejaký kód

        }

Ak použijete túto metódu vo svojom kóde a skompilujete svoj program, zobrazí sa varovanie zobrazené vo výstupnom okne Visual Studio IDE. Ak chcete, môžete toto varovanie ignorovať. Čo teraz, ak chcete, aby vývojári túto metódu vôbec nepoužívali? Potom môžete použiť druhý parameter (je však voliteľný) a zároveň deklarovať atribút Zastarané. Tu je upravená verzia metódy DoSomeWork (). Všimnite si tentoraz použitie boolovského parametra.

[Zastarané („Táto metóda je zastaraná ...“, pravda)]

public static void DoSomeWork ()

        {

// Nejaký kód

        }                                                                                                                        

Keď tento krát zadáte hodnotu „true“ ako druhý voliteľný parameter a skompilujete program, kód by sa nezkompiloval vôbec. To si chcel urobiť, že?

Vlastné atribúty

V tejto časti preskúmame, ako môžeme implementovať vlastné atribúty. Vlastné atribúty sú triedy, ktoré dedia triedu System.Attribute. Ak chcete implementovať vlastnú triedu atribútov, vytvorte novú triedu a odvodte ju z triedy System.Attribute, ako je uvedené nižšie.

pomocou systému;

verejná trieda CustomAttribute: Atribút

{

}

Na kontrolu používania vlastných atribútov môžete využiť výhodu triedy AttributeUsage. Táto trieda obsahuje vlastnosti ako ValidOn, AllowMultiple a Inherited, pomocou ktorých je možné riadiť použitie vášho vlastného atribútu.

Nasledujúci úryvok kódu ilustruje upravenú verziu našej triedy vlastných atribútov. Všimnite si použitie konštruktora, ktorý prijme reťazec ako argument a priradí ho súkromnému členovi reťazca v triede. Toto slúži len na ilustračné účely.

[AttributeUsage (AttributeTargets.All)]

verejná trieda CustomAttribute: Atribút

    {

súkromný text reťazca;

public CustomAttribute (text reťazca)

        {

this.Text = text;

        }

verejný reťazec Text

        {

dostať

            {

vrátiť tento.text;

            }

nastaviť

            {

this.text = hodnota;

            }

        }

    }

Môžete tiež určiť ciele atribútov, na ktoré by sa mal použiť váš vlastný atribút. Takto to môžete urobiť.

[AttributeUsage (AttributeTargets.Class |

AttributeTargets.Constructor |

AttributeTargets.Field |

AttributeTargets.Method |

AttributeTargets.Property,

AllowMultiple = true)]

    verejná trieda CustomAttribute: Atribút

    {

súkromný text reťazca;

public CustomAttribute (text reťazca)

        {

this.Text = text;

        }

verejný reťazec Text

        {

dostať

            {

vrátiť tento.text;

            }

nastaviť

            {

this.text = hodnota;

            }

        }

    }

Odraz môžete teraz použiť na zobrazenie všetkých atribútov aplikovaných na konkrétny objekt pomocou nasledujúceho útržku kódu.

MemberInfo memberInfo = typeof (CustomAttribute);

object [] attributes = memberInfo.GetCustomAttributes (true);

pre (int i = 0, j = atribúty. Dĺžka; i <j; i ++)

  {

Console.WriteLine (atribúty [i]);

  }

Teraz zvážime nasledujúcu triedu, v ktorej by sme použili náš vlastný atribút.

[CustomAttribute („Hello World ...“)]

verejná trieda SomeClass

{

}

Všimnite si, ako sa použil vlastný atribút a ako argument sa mu odovzdal text. Nasledujúci úryvok kódu ilustruje, ako môžete vytlačiť obsah vlastnosti Text.

MemberInfo memberInfo = typeof (SomeClass);

object [] attributes = memberInfo.GetCustomAttributes (true);

foreach (atribút objektu v atribútoch)

{

CustomAttribute customAttribute = atribút ako CustomAttribute;

if (customAttribute! = null)

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

inak

Console.WriteLine ();

}

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