Delen 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 genaamd reflectie. Zie Reflectie (Visual Basic) voor meer informatie.

Kenmerken hebben de volgende eigenschappen:

  • Kenmerken voegen metagegevens toe aan uw programma. Metagegevens is 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 eventuele 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 met behulp van weerspiegeling. Zie Toegang tot Attributen met Reflectie (Visual Basic) voor meer informatie.

Kenmerken gebruiken

Kenmerken kunnen op de meeste declaraties worden geplaatst, hoewel een specifiek kenmerk de typen declaraties kan beperken waarop deze geldig is. In Visual Basic wordt een kenmerk tussen punthaken (<>) geplaatst. Het moet direct worden weergegeven vóór het element waarop het wordt toegepast, op dezelfde regel.

In dit voorbeeld wordt het kenmerk SerializableAttribute 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

Meer dan één kenmerk kan 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 meerdere keren worden opgegeven voor een bepaalde entiteit. Een voorbeeld van een dergelijk multiusekenmerk is ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

Opmerking

Volgens de conventie eindigen alle kenmerknamen met het woord 'Kenmerk' om ze te onderscheiden van andere items in .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 .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 andere parameters zijn benoemd. In dit geval worden beide benoemde parameters standaard ingesteld op false, 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 eraan voorafgaat. Maar u kunt ook expliciet identificeren of een kenmerk wordt toegepast op een methode, of op de parameter, of op de retourwaarde.

Gebruik de volgende syntaxis om expliciet een kenmerkdoel te identificeren:

<target : attribute-list>

De lijst met mogelijke target waarden wordt weergegeven in de volgende tabel.

Doelwaarde Van toepassing op:
assembly Hele montage
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 kenmerk WebMethod in webservices om aan te geven dat de methode kan worden aangeroepen via het SOAP-protocol. Zie WebMethodAttribute voor meer informatie.

  • Hoe u de parameters van een methode afstemt voor interoperabiliteit met native code. Zie MarshalAsAttribute voor meer informatie.

  • Beschrijving van de COM-eigenschappen voor klassen, methoden en interfaces.

  • Niet-beheerde code aanroepen met behulp van de klasse DllImportAttribute.

  • Beschrijving van uw assembly in termen van titel, versie, beschrijving of handelsmerk.

  • Beschrijven welke leden van een klasse moeten worden geserialiseerd voor persistentie.

  • Hoe de relaties te leggen tussen klasse-leden 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 van een methode.

Voor meer informatie, zie:

Zie ook