Použití atributů

Použijte následující postup pro použití atributu na element kódu.

  1. Definujte nový atribut nebo použijte existující atribut importováním jeho oboru názvů z rozhraní .NET Framework.

  2. Použijte atribut na element kódu tím, že ho umístíte bezprostředně před element.

    Každý jazyk má svou vlastní syntaxi atributů. V jazyce C++ a jazyce C# je atribut uzavřen v hranatých závorkách a oddělen od prvku prázdný znakem, který může obsahovat konec řádku. V jazyce Visual Basic je atribut ohraničen ostrými závorkami a musí být na stejném logickém řádku. Znak pro pokračování řádku může být použit v případě, že je požadován konec řádku. V jazyce J# je atribut připojen pomocí speciální syntaxe komentáře.

  3. Zadejte parametry pozice a jména pro atribut.

    Parametry pozice jsou vyžadovány a musí předcházet všechny parametry jména. Odpovídají parametrům jednoho z konstruktorů atributu. Parametry jména jsou volitelné a odpovídají vlastnostem atributu pro čtení a zápis. V jazyce C++, C# a J# zadejte name=value pro každý volitelný parametr, kde name je název vlastnosti. V jazyce Visual Basic, zadejte name:=value.

Atribut je při kompilaci kódu vložen do metadat a je k dispozici modulu CLR (Common Language Runtime) a vlastním nástrojům nebo aplikacím prostřednictvím služby reflexe modulu runtime.

Podle konvencí všechny názvy atributů končí slovem Attribute. Avšak několik jazyků, které používají modul runtime, jako jsou například Visual Basic a C#, nevyžadují zadávání plného názvu atibutu. Například pokud chcete inicializovat System.ObsoleteAttribute, stačí se odkazovat na Obsolete.

Použití atributu na metodu

Následující příklad kódu ukazuje, jak deklarovat System.ObsoleteAttribute, který označuje kód jako zastaralý. Řetězec "Will be removed in next version" je předán atributu. Tento atribut způsobí zobrazení upozornění kompilátoru, které zobrazí předaný řetězec, když je zavolán kód, který je popisován atributem.

Public Class Example
    ' Specify attributes between square brackets in C#.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version.")>
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class
public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
public ref class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
public:
    [Obsolete("Will be removed in next version.")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};

ref class Test
{
public:
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example::Add(2, 2);
    }
};

int main()
{
    Test::Main();
}

Použití atributů na úrovni sestavení

Pokud chcete použít atribut na úrovni sestavení, použijte klíčové slovo Assembly. Následující kód ukazuje AssemblyNameAttribute použitý na úrovni sestavení.

Imports System.Reflection
<Assembly:AssemblyTitle("My Assembly")>
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
using namespace System::Reflection;
[assembly:AssemblyTitle("My Assembly")];

Když je tento atribut použit, řetězec "MyAssembly" je umístěn v manifestu sestavení v části souboru s metadaty. Atribut můžete zobrazit buď pomocí MSIL Disassembler (Ildasm.exe) nebo vytvořením vlastního programu pro načtení atributu.

Viz také

Odkaz

Attributes (C# and Visual Basic)

Koncepty

Rozšíření metadat pomocí atributů

Získávání informací uložených v atributech

Další zdroje

Attributed Programming Concepts