Freigeben über


Attributübersicht (Visual Basic)

Attribute bieten eine leistungsstarke Methode zum Zuordnen von Metadaten oder deklarativen Informationen mit Code (Assemblys, Typen, Methoden, Eigenschaften usw.). Nachdem ein Attribut einer Programmentität zugeordnet ist, kann das Attribut zur Laufzeit abgefragt werden, indem eine Technik namens Reflectionverwendet wird. Weitere Informationen finden Sie unter Reflection (Visual Basic).

Attribute weisen die folgenden Eigenschaften auf:

  • Attribute fügen Ihrem Programm Metadaten hinzu. Metadaten- sind Informationen zu den in einem Programm definierten Typen. Alle .NET-Assemblys enthalten einen angegebenen Satz von Metadaten, der die Typen und Typmember beschreibt, die in der Assembly definiert sind. Sie können benutzerdefinierte Attribute hinzufügen, um zusätzliche Informationen anzugeben, die erforderlich sind. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Attributen (Visual Basic).

  • Sie können ein oder mehrere Attribute auf ganze Assemblys, Module oder kleinere Programmelemente wie Klassen und Eigenschaften anwenden.

  • Attribute können Argumente auf die gleiche Weise akzeptieren wie Methoden und Eigenschaften.

  • Ihr Programm kann seine eigenen Metadaten oder die Metadaten in anderen Programmen mithilfe der Reflexion untersuchen. Weitere Informationen finden Sie unter Zugreifen auf Attribute mithilfe von Reflection (Visual Basic).For more information, see Accessing Attributes by Using Reflection (Visual Basic).

Verwenden von Attributen

Attribute können für die meisten Deklarationen platziert werden, ein bestimmtes Attribut kann jedoch die Typen von Deklarationen einschränken, für die sie gültig ist. In Visual Basic wird ein Attribut in winkelige Klammern (<>) eingeschlossen. Es muss unmittelbar vor dem Element, auf das es angewendet wird, in derselben Zeile angezeigt werden.

In diesem Beispiel wird das attribut SerializableAttribute verwendet, um ein bestimmtes Merkmal auf eine Klasse anzuwenden:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

Eine Methode mit dem Attribut DllImportAttribute wird wie folgt deklariert:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

Mehrere Attribute können in einer Deklaration platziert werden:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

Einige Attribute können für eine bestimmte Entität mehrmals angegeben werden. Ein Beispiel für ein solches Attribut mit mehrfacher Verwendung ist ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

Hinweis

Standardmäßig enden alle Attributnamen mit dem Wort "Attribut", um sie von anderen Elementen im .NET Framework zu unterscheiden. Sie müssen jedoch nicht das Attributsuffix angeben, wenn Sie Attribute im Code verwenden. Zum Beispiel ist [DllImport] gleichwertig mit [DllImportAttribute], aber DllImportAttribute ist der tatsächliche Name des Attributs im .NET Framework.

Attributparameter

Viele Attribute weisen Parameter auf, die positional, unbenannt der benannt sein können. Alle Positionsparameter müssen in einer bestimmten Reihenfolge angegeben werden und können nicht weggelassen werden. benannte Parameter sind optional und können in beliebiger Reihenfolge angegeben werden. Positionsparameter werden zuerst angegeben. Diese drei Attribute sind z. B. gleichwertig:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Der erste Parameter, der DLL-Name, ist positional und kommt immer zuerst; die anderen benannt werden. In diesem Fall werden beide benannten Parameter standardmäßig auf "false" festgelegt, sodass sie weggelassen werden können. Informationen zu Standardwerten finden Sie in der Dokumentation des jeweiligen Attributs.

Attributziele

Das Ziel eines Attributs ist die Entität, auf die das Attribut angewendet wird. Ein Attribut kann beispielsweise auf eine Klasse, eine bestimmte Methode oder eine gesamte Assembly angewendet werden. Standardmäßig gilt ein Attribut für das element, das ihm vorangestellt ist. Sie können aber auch explizit identifizieren, ob ein Attribut auf eine Methode oder auf seinen Parameter oder auf den Rückgabewert angewendet wird.

Verwenden Sie die folgende Syntax, um ein Attributziel explizit zu identifizieren:

<target : attribute-list>

Die Liste der möglichen target Werte ist in der folgenden Tabelle dargestellt.

Zielwert Gilt für:
assembly Gesamte Assembly
module Aktuelles Assemblymodul (das sich von einem Visual Basic-Modul unterscheidet)

Das folgende Beispiel zeigt, wie Attribute auf Assemblys und Module angewendet werden. Weitere Informationen finden Sie unter Common Attributes (Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

Allgemeine Verwendungen für Attribute

Die folgende Liste enthält einige der allgemeinen Verwendungen von Attributen im Code:

  • Kennzeichnen von Methoden mithilfe des attributs WebMethod in Webdiensten, um anzugeben, dass die Methode über das SOAP-Protokoll aufgerufen werden kann. Weitere Informationen finden Sie unter WebMethodAttribute.

  • Beschreiben, wie Methodenparameter bei der Interaktion mit systemeigenem Code gemarshallt werden sollen. Weitere Informationen finden Sie unter MarshalAsAttribute.

  • Beschreiben der COM-Eigenschaften für Klassen, Methoden und Schnittstellen.

  • Aufrufen von nicht verwalteten Code mithilfe der DllImportAttribute Klasse.

  • Beschreiben der Assembly im Hinblick auf Titel, Version, Beschreibung oder Marke.

  • Beschreiben, welche Member einer Klasse zur Verbesserung der Dauerhaftigkeit serialisiert werden müssen.

  • Beschreibung der Zuordnung zwischen Klassenmitgliedern und XML-Knoten für die XML-Serialisierung.

  • Beschreiben der Sicherheitsanforderungen für Methoden.

  • Angeben von Merkmalen, die zum Erzwingen der Sicherheit verwendet werden.

  • Steuern von Optimierungen durch den Just-in-Time-Compiler (JIT), sodass der Code einfach zu debuggen bleibt.

  • Abrufen von Informationen zum Aufrufer einer Methode.

Weitere Informationen finden Sie unter:

Siehe auch