.NET Tip #7: Atributy Obsolete a Conditional

Tomáš Jecha, MVP, MCSD       06.10.2008       C#, VB.NET, .NET Tips       11142 zobrazení

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í:

Obsolete metoda

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:

Debug / Release

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ů.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback