Share via


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.

Zie voor meer informatie:

Zie ook