Atributy obecně
Atribut je konfigurovatelný příznak aplikovatelný na tyto elementy:
- Assembly, moduly, třídy, struktury, enumy, kontruktory, metody, vlastnostni, fieldy, události, interfacy, parametry, delegáty a návratové hodnoty
Nový atribut lze definovat napsáním třídy dědící System.Attribute.
V .NET frameworku je celá řada atributů předpřipravených. V tomto příspěvku si povíme o dvou užitečných. O atributu Obsolete a Conditional.
Atribut Obsolete
Atribut Obsolete slouží k označení elementu (třídy, vlastnosti, funkce atp.), který považujeme za zastaralý. Většinou se to hodí u prvků, které zanecháváme kvůli zpětné kompatibilitě, ale do budoucna je hodláme zrušit a nahradit jinou funkcí. Pokud takový element použijeme, kompilátor i Visual Studio nás na zastaralost upozorní, ale projekt se vybuilduje a bez problémů spustí:
Kód ve Visual Basicu:
Module Module1
Sub Main()
ZastaralaFunkce()
Console.ReadKey()
End Sub
<Obsolete("Tato funkce tu od další verze už nebude!")> _
Public Sub ZastaralaFunkce()
Console.WriteLine("Vypis 1")
End Sub
End Module
V C# se používá k označení atributem hranatá závorka:
[Obsolete("Tato funkce tu od další verze už nebude!")]
public void ZastaralaFunkce()
{
Console.WriteLine("Vypis 1");
}
Atribut Conditional
System.Diagnostics.Conditional slouží k označení těch metod, které se mají spustit jen v případě, že je při dané kompilaci definována kompilační konstanta uvedená jako argument atributu (například konstanta DEBUG při debug režimu). Příklad:
Module Module1
Sub Main()
Vypis("Text 1")
VypisJenPriDebugovani("Text 2")
Vypis("Text 3")
Console.ReadKey()
End Sub
Public Sub Vypis(ByVal text As String)
Console.WriteLine(text)
End Sub
<System.Diagnostics.Conditional("DEBUG")> _
Public Sub VypisJenPriDebugovani(ByVal text As String)
Console.WriteLine(text)
End Sub
End Module
Když aplikaci spustíme v debug režimu, vykonají se všechny 3 metody. Pokud ji ale vykompilujeme pod release režimem, nikdy se nespustí kód metody VypisJenPriDebugovani:
Framework .NET obsahuje řadu dalších užitečných atributů. Některé z nich popíšu v jednom z příštích příspěvků.