Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema werden die Attribute beschrieben, die am häufigsten in Visual Basic-Programmen verwendet werden.
Globale Attribute
Die meisten Attribute werden auf bestimmte Sprachelemente wie Klassen oder Methoden angewendet; Einige Attribute sind jedoch global – sie gelten für eine gesamte Assembly oder ein gesamtes Modul. Zum Beispiel kann das AssemblyVersionAttribute-Attribut zum Einbetten von Versionsinformationen in eine Assembly verwendet werden. Diese sieht wie folgt aus:
<Assembly: AssemblyVersion("1.0.0.0")>
Globale Attribute werden im Quellcode nach allen Anweisungen der obersten Ebene Imports und vor Typ-, Modul- oder Namespacedeklarationen angezeigt. Globale Attribute können in mehreren Quelldateien angezeigt werden, aber die Dateien müssen in einem einzigen Kompilierungsdurchlauf kompiliert werden. Bei Visual Basic-Projekten werden globale Attribute im Allgemeinen in die AssemblyInfo.vb Datei eingefügt (die Datei wird automatisch erstellt, wenn Sie ein Projekt in Visual Studio erstellen).
Assemblyattribute sind Werte, die Informationen zu einer Assembly bereitstellen. Sie fallen in die folgenden Kategorien:
Attribute für Assemblyidentitäten
Informationsattribute
Attribute für Assemblymanifeste.
Attribute für Assemblyidentitäten
Drei Attribute (mit starkem Namen, falls zutreffend) bestimmen die Identität einer Assembly: Name, Version und Kultur. Diese Attribute bilden den vollständigen Namen der Assembly und sind erforderlich, wenn Sie im Code darauf verweisen. Sie können die Version und Kultur einer Assembly mithilfe von Attributen festlegen. Der Name-Wert wird jedoch vom Compiler, der Visual Studio-IDE im Dialogfeld "Assembly-Information" oder dem Assemblylinker (Al.exe) festgelegt, wenn die Assembly erstellt wird, basierend auf der Datei, die das Assemblymanifest enthält. Das AssemblyFlagsAttribute Attribut gibt an, ob mehrere Kopien der Assembly koexistieren können.
Die folgende Tabelle zeigt die Identitätsattribute.
| Merkmal | Zweck |
|---|---|
| AssemblyName | Beschreibt vollständig die Identität einer Assembly |
| AssemblyVersionAttribute | Gibt die Version einer Assembly an. |
| AssemblyCultureAttribute | Gibt an, welche Kultur die Assembly unterstützt. |
| AssemblyFlagsAttribute | Gibt an, ob eine Assembly die parallele Ausführung auf demselben Computer, im selben Prozess oder in derselben Anwendungsdomäne unterstützt. |
Informationsattribute
Mithilfe von Informationsattributen können Sie zusätzliche Unternehmens- oder Produktinformationen für eine Assembly bereitstellen. Die folgende Tabelle zeigt die im System.Reflection Namespace definierten Informationsattribute.
| Merkmal | Zweck |
|---|---|
| AssemblyProductAttribute | Definiert ein benutzerdefiniertes Attribut, das einen Produktnamen für ein Assemblymanifest angibt. |
| AssemblyTrademarkAttribute | Definiert ein benutzerdefiniertes Attribut, das eine Marke für ein Assemblymanifest angibt. |
| AssemblyInformationalVersionAttribute | Definiert ein benutzerdefiniertes Attribut, das eine Informationsversion für ein Assemblymanifest angibt. |
| AssemblyCompanyAttribute | Definiert ein benutzerdefiniertes Attribut, das einen Firmennamen für ein Assemblymanifest angibt. |
| AssemblyCopyrightAttribute | Definiert ein benutzerdefiniertes Attribut, das ein Copyright für ein Assemblymanifest angibt. |
| AssemblyFileVersionAttribute | Weist den Compiler an, eine bestimmte Versionsnummer für die Win32-Dateiversionsressource zu verwenden. |
| CLSCompliantAttribute | Gibt an, ob die Assembly mit der Common Language Specification (CLS) kompatibel ist. |
Attribute für Assemblymanifeste
Sie können Assemblymanifestattribute verwenden, um im Assemblymanifest Informationen bereitzustellen. Dazu gehören Titel, Beschreibung, Standardalias und Konfiguration. In der folgenden Tabelle sind die im System.Reflection-Namespace definierten Assembly-Manifestattribute aufgeführt.
| Merkmal | Zweck |
|---|---|
| AssemblyTitleAttribute | Definiert ein benutzerdefiniertes Attribut, das einen Assemblytitel für ein Assemblymanifest angibt. |
| AssemblyDescriptionAttribute | Definiert ein benutzerdefiniertes Attribut, das eine Assemblybeschreibung für ein Assemblymanifest angibt. |
| AssemblyConfigurationAttribute | Definiert ein benutzerdefiniertes Attribut, das eine Assemblykonfiguration (z.B. Retail oder Debug) für ein Assemblymanifest angibt |
| AssemblyDefaultAliasAttribute | Definiert einen benutzerfreundlichen Standardalias für ein Assemblymanifest |
Veraltetes Attribut
Das Obsolete Attribut kennzeichnet eine Programmentität als eine, die nicht mehr zur Verwendung empfohlen wird. Jede Verwendung einer als veraltet gekennzeichneten Entität generiert anschließend eine Warnung oder einen Fehler, je nachdem, wie das Attribut konfiguriert ist. Beispiel:
<System.Obsolete("use class B")>
Class A
Sub Method()
End Sub
End Class
Class B
<System.Obsolete("use NewMethod", True)>
Sub OldMethod()
End Sub
Sub NewMethod()
End Sub
End Class
In diesem Beispiel wird das Obsolete Attribut auf die Klasse A und auf die Methode B.OldMethodangewendet. Da das zweite Argument des Attributkonstruktors, der auf B.OldMethod angewendet wird, auf true festgelegt ist, führt diese Methode zu einem Compilerfehler, während die Verwendung der Klasse A eine Warnung erzeugt. Wenn Sie B.NewMethod aufrufen, werden weder Warnungen noch Fehler erzeugt.
Die als erstes Argument für den Attributkonstruktor bereitgestellte Zeichenfolge wird als Teil der Warnung oder des Fehlers angezeigt. Wenn Sie es mit den vorherigen Definitionen verwenden, generiert der folgende Code zwei Warnungen und einen Fehler:
' Generates 2 warnings:
' Dim a As New A
' Generate no errors or warnings:
Dim b As New B
b.NewMethod()
' Generates an error, terminating compilation:
' b.OldMethod()
Es werden zwei Warnungen für die Klasse A generiert: eine für die Deklaration des Klassenverweises und eine für den Klassenkonstruktor.
Das Obsolete Attribut kann ohne Argumente verwendet werden, aber auch eine Erläuterung dazu, warum das Element veraltet ist und was stattdessen verwendet werden soll, wird empfohlen.
Das Obsolete-Attribut ist ein Attribut zur einmaligen Nutzung und kann auf jede Entität angewendet werden, die Attribute zulässt.
Obsolete ist ein Alias für ObsoleteAttribute.
Bedingtes Attribut
Das Conditional-Attribut macht die Ausführung einer Methode abhängig von einem Vorverarbeitungsbezeichner. Das Conditional-Attribut ist ein Alias für ConditionalAttribute und kann auf eine Methode oder Attributklasse angewendet werden.
In diesem Beispiel wird Conditional auf eine Methode angewendet, um die Anzeige programmspezifischer Diagnoseinformationen zu aktivieren oder zu deaktivieren.
#Const TRACE_ON = True
Imports System.Diagnostics
Module TestConditionalAttribute
Public Class Trace
<Conditional("TRACE_ON")>
Public Shared Sub Msg(ByVal msg As String)
Console.WriteLine(msg)
End Sub
End Class
Sub Main()
Trace.Msg("Now in Main...")
Console.WriteLine("Done.")
End Sub
End Module
Wenn der TRACE_ON-Bezeichner nicht definiert ist, wird keine Ablaufverfolgungsausgabe angezeigt.
Das Conditional Attribut wird häufig zusammen mit dem DEBUG Bezeichner verwendet, um Tracing- und Protokollierungsfunktionen für Debugbuilds, aber nicht in Releasebuilds zu aktivieren, wie hier gezeigt:
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
Wenn eine Als bedingte Methode bezeichnet wird, bestimmt das Vorhandensein oder Fehlen des angegebenen Vorverarbeitungssymbols, ob der Aufruf eingeschlossen oder weggelassen wird. Wenn das Symbol definiert ist, wird der Aufruf einbezogen; andernfalls wird der Aufruf ausgelassen. Die Verwendung Conditional ist eine übersichtlichere, elegantere und weniger fehleranfällige Alternative zum Einschließen von Methoden innerhalb von #if…#endif Blöcken, wie die folgende:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
Eine bedingte Methode muss eine Methode in einer Klassen- oder Strukturdeklaration sein und darf keinen Rückgabewert aufweisen.
Verwenden mehrerer Bezeichner
Wenn eine Methode über mehrere Conditional Attribute verfügt, wird ein Aufruf der Methode eingeschlossen, wenn mindestens eins der bedingten Symbole definiert ist (mit anderen Worten, die Symbole werden mithilfe des OR-Operators logisch miteinander verknüpft). In diesem Beispiel führt das Vorhandensein von entweder A oder B zu einem Methodenaufruf.
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
Um die Wirkung von logischen Verknüpfungssymbolen mithilfe des AND-Operators zu erzielen, können Sie serielle bedingte Methoden definieren. Die folgende zweite Methode wird beispielsweise nur ausgeführt, wenn beide A und B definiert sind.
<Conditional("A")>
Shared Sub DoIfA()
DoIfAandB()
End Sub
<Conditional("B")>
Shared Sub DoIfAandB()
' Code to execute when both A and B are defined...
End Sub
Verwenden von Conditional mit Attributklassen
Das Conditional-Attribut kann auch auf die Definition einer Attributklasse angewendet werden. In diesem Beispiel fügt das benutzerdefinierte Attribut Documentation nur Informationen zu den Metadaten hinzu, wenn DEBUG definiert ist.
<Conditional("DEBUG")>
Public Class Documentation
Inherits System.Attribute
Private text As String
Sub New(ByVal doc_text As String)
text = doc_text
End Sub
End Class
Class SampleClass
' This attribute will only be included if DEBUG is defined.
<Documentation("This method displays an integer.")>
Shared Sub DoWork(ByVal i As Integer)
System.Console.WriteLine(i)
End Sub
End Class
Aufruferinfoattribute
Mithilfe von Caller Info-Attributen können Sie Informationen über den Aufrufer einer Methode abrufen. Sie können den Dateipfad des Quellcodes, die Zeilennummer im Quellcode und den Membernamen des Aufrufers abrufen.
Um Informationen über den Mitgliedsaufrufer abzurufen, verwenden Sie Attribute, die auf optionale Parameter angewendet werden. Jeder optionale Parameter gibt einen Standardwert an. In der folgenden Tabelle sind die Caller Info-Attribute aufgeführt, die im System.Runtime.CompilerServices-Namespace definiert sind.
| Merkmal | BESCHREIBUNG | Typ |
|---|---|---|
| CallerFilePathAttribute | Vollständiger Pfad der Quelldatei, die den Aufrufer enthält. Dies ist der Pfad während der Kompilierung. | String |
| CallerLineNumberAttribute | Zeilennummer in der Quelldatei, aus der die Methode aufgerufen wird. | Integer |
| CallerMemberNameAttribute | Methodenname oder Eigenschaftsname des Aufrufers. Weitere Informationen finden Sie unter Caller Information (Visual Basic). | String |
| CallerArgumentExpressionAttribute | Ausdruck, der vom Aufrufer für ein Argument verwendet wird. Weitere Informationen finden Sie unter Caller Information (Visual Basic). | String |
Weitere Informationen zu den Caller Info-Attributen finden Sie unter Caller Information (Visual Basic).
Visual Basic-Attribute
In der folgenden Tabelle sind die Attribute aufgeführt, die für Visual Basic spezifisch sind.
| Merkmal | Zweck |
|---|---|
| ComClassAttribute | Gibt an, dass die Klasse als COM-Objekt verfügbar gemacht werden soll. |
| HideModuleNameAttribute | Ermöglicht den Zugriff auf Modulmitglieder nur mithilfe der qualifikation, die für das Modul erforderlich ist. |
| VBFixedStringAttribute | Gibt die Größe einer Zeichenfolge mit fester Länge in einer Struktur für die Verwendung mit Dateieingabe- und Ausgabefunktionen an. |
| VBFixedArrayAttribute | Gibt die Größe eines festen Arrays in einer Struktur für die Verwendung mit Dateieingabe- und Ausgabefunktionen an. |
COMClassAttribute
Wird COMClassAttribute verwendet, um das Erstellen von COM-Komponenten aus Visual Basic zu vereinfachen. COM-Objekte unterscheiden sich erheblich von .NET Framework-Assemblys, und ohne COMClassAttribute, müssen Sie eine Reihe von Schritten ausführen, um ein COM-Objekt aus Visual Basic zu generieren. Bei Klassen, die mit COMClassAttributegekennzeichnet sind, führt der Compiler viele dieser Schritte automatisch aus.
HideModuleNameAttribute
Verwenden Sie HideModuleNameAttribute, um auf die Mitglieder eines Moduls zuzugreifen, indem Sie nur die notwendige Qualifikation für das Modul verwenden.
VBFixedStringAttribute
Verwenden Sie VBFixedStringAttribute, um Visual Basic zu zwingen, eine Zeichenfolge mit fester Länge zu erstellen. Zeichenfolgen weisen standardmäßig eine variable Länge auf, und dieses Attribut ist beim Speichern von Zeichenfolgen in Dateien nützlich. Der folgende Code veranschaulicht folgendes:
Structure Worker
' The runtime uses VBFixedString to determine
' if the field should be written out as a fixed size.
<VBFixedString(10)> Public LastName As String
<VBFixedString(7)> Public Title As String
<VBFixedString(2)> Public Rank As String
End Structure
VBFixedArrayAttribute
Verwenden Sie VBFixedArrayAttribute, um Arrays zu deklarieren, die in der Größe festgelegt sind. Wie Visual Basic-Zeichenfolgen weisen Arrays standardmäßig eine variable Länge auf. Dieses Attribut ist beim Serialisieren oder Schreiben von Daten in Dateien nützlich.