Delen via


Algemene kenmerken (Visual Basic)

In dit onderwerp worden de kenmerken beschreven die het meest worden gebruikt in Visual Basic-programma's.

Globale kenmerken

De meeste kenmerken worden toegepast op specifieke taalelementen, zoals klassen of methoden; Sommige kenmerken zijn echter globaal, ze zijn van toepassing op een volledige assembly of module. Het kenmerk kan bijvoorbeeld AssemblyVersionAttribute worden gebruikt om versiegegevens in te sluiten in een assembly, zoals deze:

<Assembly: AssemblyVersion("1.0.0.0")>

Globale kenmerken worden weergegeven in de broncode na instructies op het hoogste niveau Imports en vóór elk type, module of naamruimtedeclaraties. Globale kenmerken kunnen worden weergegeven in meerdere bronbestanden, maar de bestanden moeten worden gecompileerd in één compilatiepas. Voor Visual Basic-projecten worden algemene kenmerken over het algemeen in het AssemblyInfo.vb-bestand geplaatst (het bestand wordt automatisch gemaakt wanneer u een project maakt in Visual Studio).

Assemblykenmerken zijn waarden die informatie geven over een assembly. Ze vallen in de volgende categorieën:

  • Assembly-identiteitskenmerken

  • Informatieve kenmerken

  • Assemblymanifestkenmerken

Assembly-identiteitskenmerken

Drie kenmerken (met een sterke naam, indien van toepassing) bepalen de identiteit van een assembly: naam, versie en cultuur. Deze kenmerken vormen de volledige naam van de assembly en zijn vereist wanneer u ernaar verwijst in code. U kunt de versie en cultuur van een assembly instellen met behulp van kenmerken. De naamwaarde wordt echter ingesteld door de compiler, de Visual Studio IDE in het dialoogvenster Assembly-gegevens of de Assembly Linker (Al.exe) wanneer de assembly wordt gemaakt, op basis van het bestand dat het assemblymanifest bevat. Het AssemblyFlagsAttribute kenmerk geeft aan of meerdere exemplaren van de assembly naast elkaar kunnen bestaan.

In de volgende tabel ziet u de identiteitskenmerken.

Kenmerk Doel
AssemblyName Beschrijft de identiteit van een assembly volledig.
AssemblyVersionAttribute Hiermee geeft u de versie van een assembly.
AssemblyCultureAttribute Hiermee geeft u op welke cultuur de assembly ondersteunt.
AssemblyFlagsAttribute Hiermee geeft u op of een assembly ondersteuning biedt voor uitvoering naast elkaar op dezelfde computer, in hetzelfde proces of in hetzelfde toepassingsdomein.

Informatieve kenmerken

U kunt informatieve kenmerken gebruiken om aanvullende bedrijfs- of productgegevens voor een assembly op te geven. In de volgende tabel ziet u de informatieve kenmerken die zijn gedefinieerd in de System.Reflection naamruimte.

Kenmerk Doel
AssemblyProductAttribute Hiermee definieert u een aangepast kenmerk waarmee een productnaam voor een assemblymanifest wordt opgegeven.
AssemblyTrademarkAttribute Hiermee definieert u een aangepast kenmerk waarmee een handelsmerk voor een assemblymanifest wordt opgegeven.
AssemblyInformationalVersionAttribute Hiermee definieert u een aangepast kenmerk waarmee een informatieve versie voor een assemblymanifest wordt opgegeven.
AssemblyCompanyAttribute Hiermee definieert u een aangepast kenmerk waarmee een bedrijfsnaam voor een assemblymanifest wordt opgegeven.
AssemblyCopyrightAttribute Hiermee definieert u een aangepast kenmerk dat een copyright voor een assemblymanifest aangeeft.
AssemblyFileVersionAttribute Hiermee geeft u de compiler de opdracht om een specifiek versienummer te gebruiken voor de Win32-bestandsversieresource.
CLSCompliantAttribute Geeft aan of de assembly voldoet aan de Common Language Specification (CLS).

Kenmerken van assemblymanifest

U kunt de kenmerken van het assemblymanifest gebruiken om informatie op te geven in het assemblymanifest. Dit omvat titel, beschrijving, standaardalias en configuratie. In de volgende tabel ziet u de kenmerken van het assemblymanifest die zijn gedefinieerd in de System.Reflection naamruimte.

Kenmerk Doel
AssemblyTitleAttribute Hiermee definieert u een aangepast kenmerk waarmee een assemblytitel voor een assemblymanifest wordt opgegeven.
AssemblyDescriptionAttribute Hiermee definieert u een aangepast kenmerk waarmee een assemblybeschrijving voor een assemblymanifest wordt opgegeven.
AssemblyConfigurationAttribute Hiermee definieert u een aangepast kenmerk waarmee een assemblyconfiguratie (zoals detailhandel of foutopsporing) voor een assemblymanifest wordt opgegeven.
AssemblyDefaultAliasAttribute Definieert een beschrijvende standaardalias voor een assemblymanifest

Verouderd kenmerk

Het Obsolete kenmerk markeert een programma-entiteit als een entiteit die niet meer wordt aanbevolen voor gebruik. Elk gebruik van een entiteit die verouderd is gemarkeerd, genereert vervolgens een waarschuwing of een fout, afhankelijk van hoe het kenmerk is geconfigureerd. Voorbeeld:

<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 dit voorbeeld wordt het Obsolete kenmerk toegepast op klasse A en methode B.OldMethod. Omdat het tweede argument van de kenmerkconstructor waarop is toegepast B.OldMethod is ingesteld true, veroorzaakt deze methode een compilerfout, terwijl het gebruik van klasse A alleen een waarschuwing oplevert. Aanroepen B.NewMethodproduceert echter geen waarschuwing of fout.

De tekenreeks die wordt opgegeven als het eerste argument voor kenmerkconstructor, wordt weergegeven als onderdeel van de waarschuwing of fout. Wanneer u deze bijvoorbeeld gebruikt met de vorige definities, genereert de volgende code twee waarschuwingen en één fout:

' 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()

Er worden twee waarschuwingen voor klasse A gegenereerd: één voor de declaratie van de klassereferentie en één voor de klasseconstructor.

Het Obsolete kenmerk kan zonder argumenten worden gebruikt, maar inclusief een uitleg over waarom het item verouderd is en wat u in plaats daarvan moet gebruiken.

Het Obsolete kenmerk is een kenmerk voor eenmalig gebruik en kan worden toegepast op elke entiteit die kenmerken toestaat. Obsolete is een alias voor ObsoleteAttribute.

Voorwaardelijk kenmerk

Het Conditional kenmerk maakt de uitvoering van een methode afhankelijk van een voorverwerkings-id. Het Conditional kenmerk is een alias voor ConditionalAttributeen kan worden toegepast op een methode of een kenmerkklasse.

In dit voorbeeld Conditional wordt toegepast op een methode om de weergave van programmaspecifieke diagnostische gegevens in of uit te schakelen:

#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

Als de TRACE_ON id niet is gedefinieerd, wordt er geen traceringsuitvoer weergegeven.

Het Conditional kenmerk wordt vaak gebruikt met de DEBUG id om tracerings- en logboekregistratiefuncties in te schakelen voor foutopsporingsversies, maar niet in release-builds, zoals deze:

<Conditional("DEBUG")>
Shared Sub DebugMethod()

End Sub

Wanneer een methode die is gemarkeerd als voorwaardelijk wordt aangeroepen, bepaalt de aanwezigheid of afwezigheid van het opgegeven voorverwerkingssymbool of de aanroep wordt opgenomen of weggelaten. Als het symbool is gedefinieerd, wordt de aanroep opgenomen; anders wordt de aanroep weggelaten. Het gebruik Conditional is een schoner, eleganter en minder foutgevoelig alternatief voor het insluiten van methoden in #if…#endif blokken, zoals:

#If DEBUG Then
    Sub ConditionalMethod()
    End Sub
#End If

Een voorwaardelijke methode moet een methode in een klasse- of structdeclaratie zijn en mag geen retourwaarde hebben.

Meerdere id's gebruiken

Als een methode meerdere Conditional kenmerken heeft, wordt een aanroep naar de methode opgenomen als ten minste één van de voorwaardelijke symbolen is gedefinieerd (met andere woorden, de symbolen worden logisch gekoppeld met behulp van de OPERATOR OR). In dit voorbeeld resulteert de aanwezigheid van een A van beide of B in een methode-aanroep:

<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()

End Sub

Als u het effect van logisch koppelen van symbolen wilt bereiken met behulp van de AND-operator, kunt u seriële voorwaardelijke methoden definiëren. De tweede methode hieronder wordt bijvoorbeeld alleen uitgevoerd als beide A en B zijn gedefinieerd:

<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

Voorwaardelijk gebruiken met kenmerkklassen

Het Conditional kenmerk kan ook worden toegepast op een kenmerkklassedefinitie. In dit voorbeeld voegt het aangepaste kenmerk Documentation alleen informatie toe aan de metagegevens als DEBUG is gedefinieerd.

<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

Kenmerken van aanroepergegevens

Met behulp van kenmerken voor bellergegevens kunt u informatie over de aanroeper voor een methode verkrijgen. U kunt het bestandspad van de broncode, het regelnummer in de broncode en de lidnaam van de aanroeper verkrijgen.

Als u informatie over ledenoproepen wilt verkrijgen, gebruikt u kenmerken die worden toegepast op optionele parameters. Elke optionele parameter geeft een standaardwaarde op. In de volgende tabel ziet u de kenmerken Van nummerweergave die zijn gedefinieerd in de System.Runtime.CompilerServices naamruimte:

Kenmerk Beschrijving Type
CallerFilePathAttribute Volledig pad van het bronbestand dat de aanroeper bevat. Dit is het pad tijdens het compileren. String
CallerLineNumberAttribute Regelnummer in het bronbestand waaruit de methode wordt aangeroepen. Integer
CallerMemberNameAttribute Methodenaam of eigenschapsnaam van de aanroeper. Zie Informatie over beller (Visual Basic) voor meer informatie. String
CallerArgumentExpressionAttribute Expressie die wordt gebruikt door de aanroeper voor een argument. Zie Informatie over beller (Visual Basic) voor meer informatie. String

Zie Caller Information (Visual Basic) voor meer informatie over de kenmerken Voor bellergegevens.

Visual Basic-kenmerken

De volgende tabel bevat de kenmerken die specifiek zijn voor Visual Basic.

Kenmerk Doel
ComClassAttribute Geeft aan de compiler aan dat de klasse moet worden weergegeven als een COM-object.
HideModuleNameAttribute Hiermee kunnen moduleleden alleen worden geopend met behulp van de kwalificatie die nodig is voor de module.
VBFixedStringAttribute Hiermee geeft u de grootte van een tekenreeks met vaste lengte in een structuur op voor gebruik met bestandsinvoer- en uitvoerfuncties.
VBFixedArrayAttribute Hiermee geeft u de grootte van een vaste matrix in een structuur voor gebruik met bestandsinvoer- en uitvoerfuncties.

COMClassAttribute

Gebruik COMClassAttribute dit om het proces van het maken van COM-onderdelen vanuit Visual Basic te vereenvoudigen. COM-objecten verschillen aanzienlijk van .NET Framework-assembly's en zonder COMClassAttribute, moet u een aantal stappen volgen om een COM-object te genereren vanuit Visual Basic. Voor klassen die zijn gemarkeerd met COMClassAttribute, voert de compiler veel van deze stappen automatisch uit.

HideModuleNameAttribute

Gebruik HideModuleNameAttribute dit om toe te staan dat moduleleden alleen toegang krijgen tot de kwalificatie die nodig is voor de module.

VBFixedStringAttribute

Gebruik VBFixedStringAttribute dit om Visual Basic af te dwingen om een tekenreeks met een vaste lengte te maken. Tekenreeksen hebben standaard een variabele lengte en dit kenmerk is handig bij het opslaan van tekenreeksen naar bestanden. De volgende code laat dit zien:

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

Gebruik VBFixedArrayAttribute dit om matrices te declareren die zijn vastgezet in grootte. Net als Visual Basic-tekenreeksen zijn matrices standaard van variabele lengte. Dit kenmerk is handig bij het serialiseren of schrijven van gegevens naar bestanden.

Zie ook