Sdílet prostřednictvím


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.

z0w1kczw.collapse_all(cs-cz,VS.110).gifAtribut 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 .

z0w1kczw.collapse_all(cs-cz,VS.110).gifAtribut 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:

Viz také

Referenční dokumentace

Odraz (C# a Visual Basic)

Koncepty

Příručka programování C#

Další zdroje

Příručka programování v jazyce Visual Basic

Rozšíření metadat pomocí atributů