Overzicht van kenmerken (Visual Basic)
Kenmerken bieden een krachtige methode voor het koppelen van metagegevens of declaratieve informatie, met code (assembly's, typen, methoden, eigenschappen, enzovoort). Nadat een kenmerk is gekoppeld aan een programma-entiteit, kan het kenmerk tijdens runtime worden opgevraagd met behulp van een techniek die weerspiegeling wordt genoemd. Zie Reflectie (Visual Basic) voor meer informatie.
Kenmerken hebben de volgende eigenschappen:
Kenmerken voegen metagegevens toe aan uw programma. Metagegevens zijn informatie over de typen die in een programma zijn gedefinieerd. Alle .NET-assembly's bevatten een opgegeven set metagegevens waarmee de typen en typeleden worden beschreven die in de assembly zijn gedefinieerd. U kunt aangepaste kenmerken toevoegen om aanvullende informatie op te geven die vereist is. Zie aangepaste kenmerken maken (Visual Basic) voor meer informatie.
U kunt een of meer kenmerken toepassen op volledige assembly's, modules of kleinere programma-elementen, zoals klassen en eigenschappen.
Kenmerken kunnen argumenten op dezelfde manier accepteren als methoden en eigenschappen.
Uw programma kan zijn eigen metagegevens of metagegevens in andere programma's onderzoeken door reflectie te gebruiken. Zie Accessing Attributes by Using Reflection (Visual Basic) voor meer informatie.
Kenmerken gebruiken
Kenmerken kunnen op vrijwel elke declaratie worden geplaatst, hoewel een specifiek kenmerk mogelijk de typen declaraties beperkt waarop het geldig is. In Visual Basic wordt een kenmerk tussen punthaken (<>) geplaatst. Het moet direct vóór het element waarop het wordt toegepast, op dezelfde regel worden weergegeven.
In dit voorbeeld wordt het SerializableAttribute kenmerk gebruikt om een specifiek kenmerk toe te passen op een klasse:
<System.Serializable()> Public Class SampleClass
' Objects of this type can be serialized.
End Class
Een methode met het kenmerk DllImportAttribute wordt als volgt gedeclareerd:
Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub
Er kunnen meer dan één kenmerk op een declaratie worden geplaatst:
Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
Sommige kenmerken kunnen meer dan één keer worden opgegeven voor een bepaalde entiteit. Een voorbeeld van een dergelijk multiuse-kenmerk is ConditionalAttribute:
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
Notitie
Volgens de conventie eindigen alle kenmerknamen met het woord 'Kenmerk' om ze te onderscheiden van andere items in de .NET Framework. U hoeft echter niet het kenmerkachtervoegsel op te geven wanneer u kenmerken in code gebruikt. Is bijvoorbeeld [DllImport]
gelijk aan[DllImportAttribute]
, maar DllImportAttribute
is de werkelijke naam van het kenmerk in de .NET Framework.
Kenmerkparameters
Veel kenmerken hebben parameters, die positioneel, naamloos of benoemd kunnen zijn. Positionele parameters moeten in een bepaalde volgorde worden opgegeven en kunnen niet worden weggelaten; benoemde parameters zijn optioneel en kunnen in elke volgorde worden opgegeven. Positionele parameters worden eerst opgegeven. Deze drie kenmerken zijn bijvoorbeeld gelijkwaardig:
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
De eerste parameter, de DLL-naam, is positioneel en komt altijd als eerste; de anderen zijn benoemd. In dit geval zijn beide benoemde parameters standaard onwaar, zodat ze kunnen worden weggelaten. Raadpleeg de documentatie van het afzonderlijke kenmerk voor informatie over standaardparameterwaarden.
Kenmerkdoelen
Het doel van een kenmerk is de entiteit waarop het kenmerk van toepassing is. Een kenmerk kan bijvoorbeeld van toepassing zijn op een klasse, een bepaalde methode of een hele assembly. Een kenmerk is standaard van toepassing op het element dat voorafgaat. Maar u kunt ook expliciet identificeren of een kenmerk wordt toegepast op een methode of op de parameter, of op de geretourneerde waarde.
Gebruik de volgende syntaxis om een kenmerkdoel expliciet te identificeren:
<target : attribute-list>
De lijst met mogelijke target
waarden wordt weergegeven in de volgende tabel.
Doelwaarde | Van toepassing op |
---|---|
assembly |
Hele assembly |
module |
Huidige assemblymodule (die verschilt van een Visual Basic module) |
In het volgende voorbeeld ziet u hoe u kenmerken toepast op assembly's en modules. Zie Common Attributes (Visual Basic) voor meer informatie.
Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>
Algemene toepassingen voor kenmerken
De volgende lijst bevat enkele veelvoorkomende toepassingen van kenmerken in code:
Methoden markeren met behulp van het
WebMethod
kenmerk in webservices om aan te geven dat de methode via het SOAP-protocol moet worden aangeroepen. Voor meer informatie raadpleegt u WebMethodAttribute.Beschrijven hoe parameters van de marshal-methode worden gebruikt bij het samenwerken met systeemeigen code. Voor meer informatie raadpleegt u MarshalAsAttribute.
Beschrijving van de COM-eigenschappen voor klassen, methoden en interfaces.
Niet-beheerde code aanroepen met behulp van de DllImportAttribute klasse.
Een beschrijving van uw assembly in termen van titel, versie, beschrijving of handelsmerk.
Beschrijven welke leden van een klasse moeten worden geserialiseerd voor persistentie.
Beschrijven hoe u toewijzingen kunt maken tussen klasseleden en XML-knooppunten voor XML-serialisatie.
De beveiligingsvereisten voor methoden beschrijven.
Kenmerken opgeven die worden gebruikt om beveiliging af te dwingen.
Optimalisaties beheren door de Just-In-Time-compiler (JIT), zodat de code eenvoudig kan worden opgespoord.
Informatie verkrijgen over de aanroeper naar een methode.
Gerelateerde secties
Zie voor meer informatie:
Toegang tot kenmerken met behulp van weerspiegeling (Visual Basic)
Procedure: Een C/C++-samenvoeging maken met behulp van kenmerken (Visual Basic)