Atributy (C# a Visual Basic)
Atributy poskytují výkonnou metoda přiřazování metadatanebo deklarativní informace kód (sestavení, typů, metod, vlastností a tak dále).Po atribut přidružen program entity, atribut můžete vyhledávat v době běhu pomocí techniku zvanou reflexe.Další informace naleznete v tématu Odraz (C# a Visual Basic).
Atributy mají následující vlastnosti:
Atributy přidat metadata pro program.Metadata informace o typech definované v program.Všechny.NET je nicméně obsahují zadanou sadu metadata , která popisuje typy a typ členů definovaných v sestavení.Můžete přidat vlastní atributy zadat všechny požadované dodatečné informace.Další informace naleznete v tématu, Vytvoření vlastní atributy (C# a Visual Basic).
Můžete párovat jeden nebo více atributů celý sestavení, moduly nebo menší prvky program jako třídy a vlastnosti.
Atributy můžete přijmout argumenty stejným způsobem jako metody a vlastnosti.
program můžete zkontrolovat pomocí reflexevlastní metadata nebo metadata v jiných aplikacích.Další informace naleznete v tématu Přístup atributy pomocí odrazu (C# a Visual Basic).
Pomocí atributů
Atributy mohou být umístěny na libovolného prohlášení, že určitý atribut může omezit typy deklarací, které je platný.V C# určete atribut umístěním název atributv hranatých závorkách ([]), nad prohlášení subjektu, na který se vztahuje.V Visual Basic atribut uzavřený v lomených závorkách (< >).Musí být uvedeny před prvek, na který je aplikován, na stejném čára.
V tomto příkladu SerializableAttributepoužít atribut párovat specifické charakteristiky třída:
<System.Serializable()> Public Class SampleClass
' Objects of this type can be serialized.
End Class
[System.Serializable]
public class SampleClass
{
// Objects of this type can be serialized.
}
metoda s atribut DllImportAttribute je deklarován takto:
Imports System.Runtime.InteropServices
...
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub
using System.Runtime.InteropServices;
...
[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();
Více než jeden atribut může být umístěn na prohlášení:
Imports System.Runtime.InteropServices
...
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
using System.Runtime.InteropServices;
...
void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }
Některé atributy lze pro daný subjekt zadán více než jednou.Příklad takové multiuse atribut ConditionalAttribute:
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
// ...
}
[!POZNÁMKA]
Úmluva, všechny názvy atribut na konci slovo "Atribut" odlišit od ostatních položek v.NET rozhraní .NET Framework.Není však nutné zadat atribut přípony při použití atributů v kódu.Například [DllImport] je ekvivalentní [DllImportAttribute], ale DllImportAttribute je skutečný název atributv.NET rozhraní .NET Framework.
Atribut parametry
Mnoho atributů mají parametry, které mohou být poziční, nepojmenované nebo pojmenované.Poziční parametry, musí být zadán v určitém pořadí a nemůže být vynechány; pojmenované parametry jsou volitelné a lze zadat v libovolném pořadí.Poziční parametry jsou uvedeny jako první.Tyto tři atributy jsou například ekvivalentní:
[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
První parametr, název knihovny DLL je poziční a pochází vždy první; ostatní jsou pojmenovány.V tomto případě oboje s názvem výchozí parametry na hodnotu false, tak lze vynechat.Naleznete v dokumentaci jednotlivých atributvýchozí hodnoty parametr .
Atribut cíle
cílová databáze atribut je entita, pro kterou platí atribut .atribut může například párovat třída, zejména metodanebo celé sestavení.Ve výchozím nastavení je atribut použije na prvek, který jej předchází.Ale můžete také výslovně identifikovat, například zda atribut je použita metodanebo jeho parametrnebo hodnoty.
Chcete-li výslovně určí atribut cílová databáze, použijte následující syntaxi:
[target : attribute-list]
<target : attribute-list>
Seznam možných target hodnoty je uveden v následující tabulce.
C# |
Visual Basic |
V aplikacích |
---|---|---|
assembly |
Assembly |
Celý sestavení |
module |
Module |
Aktuální sestavení modul (která je odlišná od Visual Basic modul) |
field |
Není podporováno |
Pole třída nebo struktura |
event |
Není podporováno |
Událost |
method |
Není podporováno |
Metoda nebo get a setpřístupové objekty vlastnost |
param |
Není podporováno |
Parametry metody nebo setparametry přístupový objekt vlastnost |
property |
Není podporováno |
Property |
return |
Není podporováno |
Vrátí hodnotu, metoda, vlastnostindexer, nebo getpřístupový objekt vlastnost |
type |
Není podporováno |
Struktura, třída, rozhraní, výčet nebo delegát |
Následující příklad ukazuje jak párovat atributy sestavení a moduly.Další informace naleznete v tématu Společné atributy (C# a Visual Basic).
Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>
using System;
using System.Reflection;
[assembly: AssemblyTitleAttribute("Production assembly 4")]
[module: CLSCompliant(true)]
Následující příklad ukazuje, jak párovat atributy metody a parametrů metoda metoda vrátí hodnoty v jazyce C#.
// default: applies to method
[SomeAttr]
int Method1() { return 0; }
// applies to method
[method: SomeAttr]
int Method2() { return 0; }
// applies to return value
[return: SomeAttr]
int Method3() { return 0; }
[!POZNÁMKA]
Bez ohledu na cíle, na kterém SomeAttr je definován platný, return cílová databáze musí být specifikována, i když SomeAttr byly definovány párovat pouze na hodnoty. Jinými slovy, kompilátor používat AttributeUsage informace k přeložit cíle dvojznačný atribut .Další informace naleznete v tématu AttributeUsage (C# a Visual Basic).
Běžné použití atributů
Následující seznam obsahuje několik běžných použití atributů v kódu:
Označení pomocí metody WebMethod atribut v web služby označuje, že metoda by měla být volána prostřednictvím protokolu SOAP . Další informace naleznete v tématu WebMethodAttribute.
Popisující jak parametrymetoda zařazovatpři spolupráci s nativní kódu. Další informace naleznete v tématu MarshalAsAttribute.
Popisující vlastnosti třídy, metody a rozhraní model COM .
Pomocí volací nespravovaný kód DllImportAttribute třída.
Popisující sestavení z hlavy, verze, popis nebo ochranná známka.
S popisem, které členy třída pro trvalé serializace.
Popisující způsob mapa mezi členy třída a uzlů jazyk XML pro jazyk XML serializace.
Popisuje požadavky na metody zabezpečení .
Určení vlastností používaných k zabezpečenívynutit.
Optimalizace řízení pomocí kompilátor za běhu (za běhu), tak zůstane snadné laditkódu.
Získání informací o volajícím metoda.
Související oddíly
Více informací naleznete: