Freigeben über


Übersicht über Attribute (Visual Basic)

Attribute stellen eine effiziente Methode dar, Metadaten oder deklarative Informationen Code (Assemblys, Typen, Methoden, Eigenschaften usw.) zuzuordnen. Nach dem Zuordnen eines Attributs zu einer Programmentität kann das Attribut zur Laufzeit mit einer Technik namens Reflektion abgefragt werden. Weitere Informationen finden Sie unter Reflektion (Visual Basic).

Attribute verfügen über die folgenden Eigenschaften:

  • Attribute fügen Metadaten zu Ihrem Programm hinzu. Metadaten sind Informationen zu den Typen, die in einem Programm definiert sind. Alle .NET-Assemblys enthalten einen festgelegten 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 erforderliche Informationen anzugeben. Weitere Informationen finden Sie unter Erstellen benutzerdefinierter Attribute (Visual Basic).

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

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

  • Das Programm kann seine eigenen Metadaten oder die Metadaten in anderen Programmen mithilfe der Reflektion untersuchen. Weitere Informationen finden Sie unter Zugreifen auf Attribute mithilfe der Reflektion (Visual Basic).

Verwenden von Attributen

Attribute können in nahezu jeder Deklaration platziert werden, auch wenn ein bestimmtes Attribut die Typen der Deklarationen einschränkt, für die es gültig ist. In Visual Basic ist ein Attribut in spitzen Klammern eingeschlossen (<>). Es muss in derselben Zeile direkt vor dem Element angezeigt werden, auf das es angewendet wird.

In diesem Beispiel wird das Attribut SerializableAttribute benutzt, um ein spezifisches 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 mehrfach verwendbares Attribut ist ConditionalAttribute:

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

Hinweis

Alle Attributnamen enden laut Konvention mit dem Wort „Attribute“, um sie von anderen Elementen in .NET Framework zu unterscheiden. Sie müssen das Attributsuffix allerdings nicht angeben, wenn Sie Attribute im Code verwenden. Beispiel: [DllImport] entspricht [DllImportAttribute], aber DllImportAttribute ist der tatsächliche Name des Attributs in .NET Framework.

Attributparameter

Viele Attribute weisen Parameter auf, die positional, unbenannt der benannt sein können. Alle positionalen Parameter müssen in einer bestimmten Reihenfolge angegeben und können nicht ausgelassen werden. Benannte Parameter sind optional und können in beliebiger Reihenfolge angegeben werden. Positionale Parameter werden zuerst angegeben. Die folgenden drei Attribute sind beispielsweise äquivalent:

<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 an erster Stelle. Die anderen sind benannt. In diesem Fall werden beide benannten Parameter standardmäßig auf „false“ festgelegt und können daher ausgelassen werden. In der Dokumentation des individuellen Attributs finden Sie Informationen zu Standardparameterwerten.

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 ganze Assembly angewendet werden. Standardmäßig wird ein Attribut auf das voranstehende Element angewendet. Sie können allerdings auch explizit festlegen, dass ein Attribut beispielsweise auf eine Methode, ihren Parameter oder ihren Rückgabewert angewendet wird.

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

<target : attribute-list>

Die Liste der möglichen target-Werte wird in der folgenden Tabelle gezeigt:

Zielwert Betrifft
assembly Gesamte Assembly
module Aktuelles Assemblymodul (unterscheidet sich von einem Visual Basic-Modul)

Im folgenden Beispiel wird veranschaulicht, wie Attribute auf Assemblys und Module angewendet werden. Weitere Informationen finden Sie unter Common Attributes (Visual Basic) (Gemeinsame Attribute (Visual Basic)).

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

Häufige Verwendungsmöglichkeiten für Attribute

Die folgende Liste enthält einige häufige Verwendungsmöglichkeiten von Attributen im Code:

  • Kennzeichnen von Methoden mit dem WebMethod-Attribut in Webdiensten, um anzugeben, dass die Methode über das SOAP-Protokoll aufrufbar sein sollte. 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 verwaltetem Code mithilfe der Klasse DllImportAttribute.

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

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

  • Beschreiben der Zuordnung zwischen Klassenmembern und XML-Knoten für die XML-Serialisierung.

  • Beschreiben der Sicherheitsanforderungen für Methoden.

  • Angeben von Eigenschaften zum Erzwingen der Sicherheit.

  • Steuern der vom JIT-Compiler (Just-In-Time-Compiler) ausgeführten Optimierungen, damit der Code weiterhin problemlos debuggt werden kann.

  • Abrufen von Informationen zum Aufrufer einer Methode.

Weitere Informationen finden Sie unter:

Siehe auch