Tworzenie atrybutów niestandardowych (Visual Basic)
Możesz utworzyć własne atrybuty niestandardowe, definiując klasę atrybutów, klasę, która pochodzi bezpośrednio lub pośrednio z Attributeklasy , co sprawia, że identyfikowanie definicji atrybutów w metadanych jest szybkie i łatwe. Załóżmy, że chcesz oznaczyć typy tagami o nazwie programisty, który napisał typ. Możesz zdefiniować niestandardową Author
klasę atrybutów:
<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
Nazwa klasy to nazwa atrybutu . Author
Pochodzi on z System.Attribute
klasy , więc jest to klasa atrybutów niestandardowych. Parametry konstruktora to parametry pozycyjne atrybutu niestandardowego. W tym przykładzie name
jest parametrem pozycyjnym. Wszystkie publiczne pola odczytu i zapisu lub właściwości mają nazwane parametry. W tym przypadku version
jest jedynym nazwanym parametrem. Zwróć uwagę na użycie atrybutu AttributeUsage
, aby Author
atrybut był prawidłowy tylko dla klas i Structure
deklaracji.
Możesz użyć tego nowego atrybutu w następujący sposób:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
AttributeUsage
ma nazwany parametr , AllowMultiple
za pomocą którego można utworzyć atrybut niestandardowy z pojedynczym użyciem lub wieloma zastosowaniami. W poniższym przykładzie kodu jest tworzony atrybut wieloużytkowy.
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
W poniższym przykładzie kodu do klasy są stosowane wiele atrybutów tego samego typu.
<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
Uwaga
Jeśli klasa atrybutów zawiera właściwość, ta właściwość musi być odczyt-zapis.