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, AllowMultiple
waarmee 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.