Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí následujícího procesu použijte atribut na prvek kódu.
Definujte nový atribut nebo použijte existující atribut .NET.
Použijte atribut na prvek kódu tak, že ho umístíte bezprostředně před prvek.
Každý jazyk má vlastní syntaxi atributu. V jazyce C++ a C# je atribut ohraničen hranatými závorkami a oddělen od elementu prázdným znakem, který může obsahovat konec řádku. V Visual Basic je atribut obklopen úhlovými závorkami a musí být na stejné logické čáře. Znak pokračování řádku lze použít, pokud je potřeba konec řádku.
Zadejte poziční parametry a pojmenované parametry pro atribut.
Poziční parametry jsou povinné a musí být před libovolnými pojmenovanými parametry; odpovídají parametrům jednoho z konstruktorů atributu. Pojmenované parametry jsou volitelné a odpovídají vlastnostem atributu pro čtení a zápis. V jazyce C++ a C# zadejte
name=valuepro každý volitelný parametr, kdenameje název vlastnosti. V Visual Basic zadejtename:=value.
Atribut se emituje do metadat při kompilaci kódu a je k dispozici běhovému prostředí CLR (Common Language Runtime) a veškerému vlastnímu nástroji nebo aplikaci prostřednictvím služeb reflexe běhového prostředí.
Podle konvence končí všechny názvy atributů na "Attribute". Několik jazyků, které cílí na modul runtime, například Visual Basic a C#, však nevyžadují, abyste zadali úplný název atributu. Pokud například chcete inicializovat System.ObsoleteAttribute, stačí na ni odkazovat pouze jako zastaralé.
Platné argumenty atributů
Když předáte argumenty atributu, použijte jeden z následujících typů výrazů:
- Konstantní výrazy (literály,
const/Consthodnoty a výčtové hodnoty) - Výrazy typu (
typeofv jazyce C#,GetTypev Visual Basic). - Výrazy názvů (
nameofv jazyce C#,NameOfv Visual Basic), které vytvářejí řetězcové konstanty v době kompilace. - Výrazy pro vytvoření pole typu atributového parametru, které jako hodnoty prvků používají výhradně pouze předchozí výrazy.
Následující typy jsou platné jako typy parametrů atributu:
Jednoduché typy (klíčové slovo C# / klíčové slovo Visual Basic / typ modulu runtime .NET):
jazyk C# Visual Basic typ modulu runtime .NET boolBooleanBoolean byteByteByte charCharChar doubleDoubleDouble floatSingleSingle intIntegerInt32 longLongInt64 shortShortInt16 stringStringString object(v jazyce C#, pokud je hodnota jedním z platných typů argumentů atributu nebo jednorozměrné pole z nich).Type.
Typy výčtu, které jsou přístupné v místě použití.
Jednorozměrná pole některého z předchozích typů.
Poznámka:
Typy sbyte, , ushort, uint, ulongdecimal, ninta nuint nejsou platné typy parametrů atributu, i když podporují literálové konstanty.
Následující příklady ukazují platné argumenty atributů:
[MyAttr(true)] // bool literal
[MyAttr(42)] // int literal
[MyAttr("hello")] // string literal
[MyAttr(MyEnum.Value)] // enum value
[MyAttr(typeof(string))] // typeof expression
[MyAttr(nameof(MyClass))] // nameof expression (string constant)
[MyAttr(new int[] { 1, 2, 3 })] // array of constants
[MyAttr(new string[] { "a", "b" })] // array of strings
<MyAttr(True)> ' Boolean literal
<MyAttr(42)> ' Integer literal
<MyAttr("hello")> ' String literal
<MyAttr(MyEnum.Value)> ' Enum value
<MyAttr(GetType(String))> ' GetType expression
<MyAttr(NameOf(MyClass))> ' NameOf expression (string constant)
<MyAttr(New Integer() {1, 2, 3})> ' Array of constants
Následující příklady ukazují argumenty, které způsobují chybu kompilátoru:
string value = "test";
[MyAttr(value)] // Error CS0182: not a constant expression
[MyAttr(GetValue())] // Error CS0182: method calls aren't allowed
Aplikovat atribut na metodu
Následující příklad kódu ukazuje, jak použít System.ObsoleteAttribute, který označuje kód jako zastaralý. Řetězec "Will be removed in next version" se předá atributu. Tento atribut způsobí upozornění kompilátoru, které zobrazí předaný řetězec, když je volán kód, který atribut popisuje.
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 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
Použití atributů na úrovni sestavení
Pokud chcete použít atribut na úrovni sestavení, použijte klíčové slovo assembly (Assembly v Visual Basic). Následující kód ukazuje AssemblyTitleAttribute použité na úrovni sestavení.
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>
Při použití tohoto atributu se řetězec "My Assembly" umístí do manifestu sestavení v části souboru metadat. Atribut můžete zobrazit buď pomocí nástroje IL Disassembler (Ildasm.exe), nebo vytvořením vlastního programu pro načtení atributu.