Udostępnij za pomocą


Omówienie atrybutów (Visual Basic)

Atrybuty zapewniają zaawansowaną metodę kojarzenia metadanych lub informacji deklaratywnych z kodem (zestawy, typy, metody, właściwości itd.). Gdy atrybut jest skojarzony z jednostką programu, można uzyskać dostęp do atrybutu w czasie wykonywania, używając techniki o nazwie odbicie. Aby uzyskać więcej informacji, zobacz Odbicie (Visual Basic).

Atrybuty mają następujące właściwości:

  • Atrybuty dodają metadane do programu. Metadata to informacje o typach zdefiniowanych w programie. Wszystkie zestawy platformy .NET zawierają określony zestaw metadanych, który opisuje typy i składowe typu zdefiniowane w zestawie. Możesz dodać atrybuty niestandardowe, aby określić wszelkie dodatkowe informacje, które są wymagane. Aby uzyskać więcej informacji, zobacz Tworzenie atrybutów niestandardowych (Visual Basic).

  • Można zastosować co najmniej jeden atrybut do całych zestawów, modułów lub mniejszych elementów programu, takich jak klasy i właściwości.

  • Atrybuty mogą akceptować argumenty w taki sam sposób jak metody i właściwości.

  • Twój program może zbadać własne metadane lub metadane w innych programach przy użyciu refleksji. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do atrybutów przy użyciu odbicia (Visual Basic).

Używanie atrybutów

Atrybuty można umieścić na większości dowolnej deklaracji, choć określony atrybut może ograniczyć typy deklaracji, na których jest prawidłowa. W języku Visual Basic atrybut jest ujęta w nawiasy kątowe (<>). Musi pojawić się bezpośrednio przed elementem, do którego jest stosowany, w tym samym wierszu.

W tym przykładzie atrybut SerializableAttribute służy do stosowania konkretnej charakterystyki do klasy:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

Metoda z atrybutem DllImportAttribute jest zadeklarowana następująco:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

Na deklaracji można umieścić więcej niż jeden atrybut:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

Niektóre atrybuty można określić więcej niż raz dla danej jednostki. Przykładem takiego atrybutu wielokrotnego zastosowania jest ConditionalAttribute:

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

Uwaga / Notatka

Zgodnie z konwencją wszystkie nazwy atrybutów kończą się słowem "Atrybut", aby odróżnić je od innych elementów w programie .NET Framework. Nie trzeba jednak określać sufiksu atrybutu podczas używania atrybutów w kodzie. Na przykład [DllImport] jest odpowiednikiem [DllImportAttribute]atrybutu , ale DllImportAttribute jest rzeczywistą nazwą atrybutu w programie .NET Framework.

Parametry atrybutu

Wiele atrybutów ma parametry, które mogą być pozycyjne, bez nazwy lub nazwane. Wszelkie parametry pozycyjne muszą być określone w określonej kolejności i nie można ich pominąć; parametry nazwane są opcjonalne i można je określić w dowolnej kolejności. Parametry pozycyjne są określane jako pierwsze. Na przykład te trzy atrybuty są równoważne:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Pierwszy parametr, nazwa biblioteki DLL, jest pozycyjny i zawsze pojawia się jako pierwszy; inne są nazwane. W tym przypadku oba nazwane parametry są domyślnie wartością false, więc można je pominąć. Zapoznaj się z dokumentacją poszczególnych atrybutów, aby uzyskać informacje na temat domyślnych wartości parametrów.

Cele atrybutów

Elementem docelowym atrybutu jest jednostka, do której ma zastosowanie atrybut. Na przykład atrybut może być stosowany do klasy, określonej metody lub całego zestawu. Domyślnie atrybut ma zastosowanie do poprzedniego elementu. Można jednak również jawnie zidentyfikować, czy atrybut jest stosowany do metody, czy do parametru, czy do jego wartości zwracanej.

Aby jawnie zidentyfikować element docelowy atrybutu, użyj następującej składni:

<target : attribute-list>

Lista możliwych wartości target jest wyświetlana w poniższej tabeli.

Wartość docelowa Odnosi się do
assembly Cały montaż
module Bieżący moduł zestawu (który różni się od modułu Visual Basic)

W poniższym przykładzie pokazano, jak zastosować atrybuty do zestawów i modułów. Aby uzyskać więcej informacji, zobacz Common Attributes (Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

Typowe zastosowania atrybutów

Poniższa lista zawiera kilka typowych zastosowań atrybutów w kodzie:

  • Oznaczanie metod przy użyciu atrybutu WebMethod w usługach sieci Web, aby wskazać, że metoda powinna być wywoływana za pośrednictwem protokołu SOAP. Aby uzyskać więcej informacji, zobacz WebMethodAttribute.

  • Opis sposobu zarządzania parametrami metody podczas współdziałania z kodem natywnym. Aby uzyskać więcej informacji, zobacz MarshalAsAttribute.

  • Opis właściwości modelu COM dla klas, metod i interfejsów.

  • Wywoływanie niezarządzanych kodu przy użyciu klasy DllImportAttribute.

  • Opisywanie zestawu pod względem tytułu, wersji, opisu lub znaku towarowego.

  • Opisanie, które elementy członkowskie klasy mają być serializowane w celu zapewnienia trwałości.

  • Opis sposobu mapowania między elementami członkowskimi klasy i węzłami XML na potrzeby serializacji XML.

  • Opis wymagań dotyczących zabezpieczeń metod.

  • Określanie właściwości używanych do wymuszania zabezpieczeń.

  • Kontrolowanie optymalizacji przez kompilator just in time (JIT), dzięki czemu kod pozostaje łatwy do debugowania.

  • Uzyskiwanie informacji o wywołującym metodę.

Aby uzyskać więcej informacji, zobacz:

Zobacz także