Delen via


Aangepaste kenmerken maken (Visual Basic)

U kunt uw eigen aangepaste kenmerken maken door een kenmerkklasse te definiƫren, een klasse die direct of indirect is afgeleid van Attribute, waardoor het identificeren van kenmerkdefinities in metagegevens snel en eenvoudig is. Stel dat u typen wilt taggen met de naam van de programmeur die het type heeft geschreven. U kunt een aangepaste Author kenmerkklasse definiƫren:

<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct)>
Public Class Author
    Inherits System.Attribute
    Private name As String
    Public version As Double
    Sub New(ByVal authorName As String)
        name = authorName
        version = 1.0
    End Sub
End Class

De klassenaam is de naam van het kenmerk. Author Het is afgeleid van System.Attribute, dus het is een aangepaste kenmerkklasse. De parameters van de constructor zijn de positionele parameters van het aangepaste kenmerk. In dit voorbeeld name is dit een positionele parameter. Openbare velden of eigenschappen voor lezen/schrijven zijn benoemde parameters. In dit geval version is dit de enige benoemde parameter. Let op het gebruik van het AttributeUsage kenmerk om het Author kenmerk alleen geldig te maken voor klasse en Structure declaraties.

U kunt dit nieuwe kenmerk als volgt gebruiken:

<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
    ' P. Ackerman's code goes here...
End Class

AttributeUsage heeft een benoemde parameter, AllowMultiplewaarmee u een aangepast kenmerk voor eenmalig gebruik of multiuse kunt maken. In het volgende codevoorbeeld wordt een multiuse-kenmerk gemaakt.

' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct,
                       AllowMultiple:=True)>
Public Class Author
    Inherits System.Attribute

In het volgende codevoorbeeld worden meerdere kenmerken van hetzelfde type toegepast op een klasse.

<Author("P. Ackerman", Version:=1.1),
Author("R. Koch", Version:=1.2)>
Class SampleClass
    ' P. Ackerman's code goes here...
    ' R. Koch's code goes here...
End Class

Notitie

Als uw kenmerkklasse een eigenschap bevat, moet die eigenschap lezen/schrijven zijn.

Zie ook