Freigeben über


Common Attributes (Visual Basic) (Gemeinsame Attribute (Visual Basic))

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.

Siehe auch