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.). Po skojarzeniu atrybutu z jednostką programu atrybut można wykonywać zapytania w czasie wykonywania przy użyciu techniki nazywanej odbiciem. Aby uzyskać więcej informacji, zobacz Odbicie (Visual Basic).
Atrybuty mają następujące właściwości:
Atrybuty dodają metadane do programu. Metadane 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ć 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.
Program może zbadać własne metadane lub metadane w innych programach przy użyciu odbicia. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do atrybutów przy użyciu odbicia (Visual Basic).
Korzystanie z atrybutów
Atrybuty można umieścić w większości dowolnej deklaracji, choć określony atrybut może ograniczyć typy deklaracji, na których jest prawidłowa. W 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 SerializableAttribute atrybut 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 w następujący sposób:
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
Zgodnie z konwencją wszystkie nazwy atrybutów kończą się wyrazem "Atrybut", aby odróżnić je od innych elementów w .NET Framework. Nie trzeba jednak określać sufiksu atrybutu podczas używania atrybutów w kodzie. Na przykład [DllImport]
jest odpowiednikiem [DllImportAttribute]
wartości , ale DllImportAttribute
jest rzeczywistą nazwą atrybutu w .NET Framework.
Parametry atrybutu
Wiele atrybutów ma parametry, które mogą być pozycyjne, nienazwane lub nazwane. Wszelkie parametry pozycyjne muszą być określone w określonej kolejności i nie można pominąć; nazwane parametry są opcjonalne i można je określić w dowolnej kolejności. Najpierw określono parametry pozycyjne. 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ę pierwszy; nazwane są inne. W tym przypadku oba nazwane parametry są domyślne na false, aby można je było pominąć. Zapoznaj się z dokumentacją poszczególnych atrybutów, aby uzyskać informacje na temat domyślnych wartości parametrów.
Docelowe atrybuty
Elementem docelowym atrybutu jest jednostka, do której ma zastosowanie atrybut. Na przykład atrybut może dotyczyć klasy, określonej metody lub całego zestawu. Domyślnie atrybut ma zastosowanie do elementu, który poprzedza. Można jednak jawnie zidentyfikować, na przykład, czy atrybut jest stosowany do metody, czy do jego 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 target
wartości jest wyświetlana w poniższej tabeli.
Wartość docelowa | Dotyczy |
---|---|
assembly |
Cały zestaw |
module |
Bieżący moduł zestawu (inny niż moduł 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 w celu wskazania, że metoda powinna być wywoływana za pośrednictwem protokołu SOAP. Aby uzyskać więcej informacji, zobacz WebMethodAttribute.Opis sposobu marshalowania parametrów 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 DllImportAttribute klasy .
Opis zestawu pod względem tytułu, wersji, opisu lub znaku towarowego.
Opis elementów członkowskich klasy do serializacji pod kątem 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 metodzie wywołującej.
Sekcje pokrewne
Aby uzyskać więcej informacji, zobacz:
Uzyskiwanie dostępu do atrybutów przy użyciu odbicia (Visual Basic)
Instrukcje: tworzenie unii C/C++ przy użyciu atrybutów (Visual Basic)