Skapa anpassade attribut (Visual Basic)

Du kan skapa egna anpassade attribut genom att definiera en attributklass, en klass som direkt eller indirekt härleds från Attribute, vilket gör det snabbt och enkelt att identifiera attributdefinitioner i metadata. Anta att du vill tagga typer med namnet på programmeraren som skrev typen. Du kan definiera en anpassad Author attributklass:

<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

Klassnamnet är attributets namn, Author. Det härleds från System.Attribute, så det är en anpassad attributklass. Konstruktorns parametrar är det anpassade attributets positionsparametrar. I det här exemplet name är en positionsparameter. Alla offentliga skrivskyddade fält eller egenskaper heter parametrar. I det här fallet version är den enda namngivna parametern. Observera att attributet används AttributeUsage för att göra Author attributet giltigt endast för klass och Structure deklarationer.

Du kan använda det här nya attributet på följande sätt:

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

AttributeUsage har en namngiven parameter, AllowMultiple, med vilken du kan skapa ett anpassat attribut för enkel användning eller multianvändning. I följande kodexempel skapas ett multiuse-attribut.

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

I följande kodexempel tillämpas flera attribut av samma typ på en klass.

<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

Kommentar

Om attributklassen innehåller en egenskap måste den egenskapen vara skrivskyddad.

Se även