Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano atrybuty, które są najczęściej używane w programach Visual Basic.
Atrybuty globalne
Większość atrybutów jest stosowana do określonych elementów języka, takich jak klasy lub metody; jednak niektóre atrybuty są globalne — mają zastosowanie do całego zestawu lub modułu. Na przykład atrybut AssemblyVersionAttribute może służyć do osadzania informacji dotyczących wersji w zestawie, w następujący sposób:
<Assembly: AssemblyVersion("1.0.0.0")>
Atrybuty globalne są wyświetlane w kodzie źródłowym po dowolnej instrukcji najwyższego poziomu Imports i przed dowolnym typem, modułem lub deklaracjami przestrzeni nazw. Atrybuty globalne mogą być wyświetlane w wielu plikach źródłowych, ale pliki muszą zostać skompilowane w jednym przebiegu kompilacji. W przypadku projektów Visual Basic atrybuty globalne są zwykle umieszczane w pliku AssemblyInfo.vb (plik jest tworzony automatycznie podczas tworzenia projektu w programie Visual Studio).
Atrybuty zestawu to wartości, które zawierają informacje o zestawie. Należą one do następujących kategorii:
Atrybuty tożsamości zestawu
Atrybuty informacyjne
Atrybuty manifestu zestawu
Atrybuty identyfikacyjne zestawu
Trzy atrybuty (o silnej nazwie, jeśli ma zastosowanie) określają tożsamość zestawu: nazwę, wersję i kulturę. Te atrybuty tworzą pełną nazwę zestawu i są wymagane podczas odwołowania się do niego w kodzie. Wersję i kulturę zestawu można ustawić przy użyciu atrybutów. Jednak wartość nazwy jest ustawiana przez kompilator, środowisko IDE programu Visual Studio w oknie dialogowym Informacje o zestawie lub łącznik zestawów (Al.exe) na podstawie pliku zawierającego manifest zestawu podczas tworzenia zestawu. Atrybut AssemblyFlagsAttribute określa, czy wiele kopii zestawu może współistnieć.
W poniższej tabeli przedstawiono atrybuty tożsamości.
| Atrybut | Przeznaczenie |
|---|---|
| AssemblyName | W pełni opisuje tożsamość zespołu. |
| AssemblyVersionAttribute | Określa wersję zestawu. |
| AssemblyCultureAttribute | Określa kulturę obsługiwaną przez zestaw. |
| AssemblyFlagsAttribute | Określa, czy zestaw obsługuje wykonywanie równoległe na tym samym komputerze, w tym samym procesie, czy w tej samej domenie aplikacji. |
Atrybuty informacyjne
Możesz użyć atrybutów informacyjnych, aby podać dodatkowe informacje o firmie lub produkcie dla zestawu. Poniższa tabela przedstawia atrybuty informacyjne zdefiniowane w przestrzeni nazw System.Reflection.
| Atrybut | Przeznaczenie |
|---|---|
| AssemblyProductAttribute | Definiuje niestandardowy atrybut określający nazwę produktu dla manifestu zestawu. |
| AssemblyTrademarkAttribute | Definiuje niestandardowy atrybut, który określa znak towarowy dla manifestu zestawu. |
| AssemblyInformationalVersionAttribute | Definiuje atrybut niestandardowy określający wersję informacyjną manifestu zestawu. |
| AssemblyCompanyAttribute | Definiuje atrybut niestandardowy, który określa nazwę firmy dla manifestu modułu. |
| AssemblyCopyrightAttribute | Definiuje niestandardowy atrybut określający informacje o prawach autorskich do manifestu zestawu. |
| AssemblyFileVersionAttribute | Instruuje kompilator, aby używał określonego numeru wersji dla zasobu wersji pliku Win32. |
| CLSCompliantAttribute | Wskazuje, czy zestaw jest zgodny ze specyfikacją języka wspólnego (CLS). |
Atrybuty manifestu zestawu
Atrybuty manifestu zestawu umożliwiają podanie informacji w manifeście zestawu. Obejmuje to tytuł, opis, alias domyślny i konfigurację. Poniższa tabela System.Reflection przedstawia atrybuty manifestu zestawu zdefiniowane w przestrzeni nazw.
| Atrybut | Przeznaczenie |
|---|---|
| AssemblyTitleAttribute | Definiuje atrybut niestandardowy, który określa tytuł zestawu w manifeście zestawu. |
| AssemblyDescriptionAttribute | Definiuje atrybut niestandardowy, który określa opis zestawu dla manifestu zestawu. |
| AssemblyConfigurationAttribute | Definiuje atrybut niestandardowy określający konfigurację zestawu (np. sprzedaż detaliczną lub debugowanie) manifestu zestawu. |
| AssemblyDefaultAliasAttribute | Definiuje przyjazną domyślną nazwę podrzędną manifestu zestawu |
Przestarzały atrybut
Atrybut Obsolete oznacza jednostkę programu jako jednostkę, która nie jest już zalecana do użycia. Każde użycie jednostki oznaczonej jako przestarzałe spowoduje wygenerowanie ostrzeżenia lub błędu w zależności od konfiguracji atrybutu. Przykład:
<System.Obsolete("use class B")>
Class A
Sub Method()
End Sub
End Class
Class B
<System.Obsolete("use NewMethod", True)>
Sub OldMethod()
End Sub
Sub NewMethod()
End Sub
End Class
W tym przykładzie Obsolete atrybut jest stosowany do klasy A i metody B.OldMethod. Ponieważ drugi argument konstruktora atrybutu zastosowanego do B.OldMethod jest ustawiony na wartość true, ta metoda spowoduje błąd kompilatora, natomiast użycie klasy A spowoduje jedynie wyświetlenie ostrzeżenia. Wywołanie B.NewMethod nie powoduje ostrzeżenia ani błędu.
Ciąg podany jako pierwszy argument konstruktora atrybutu będzie wyświetlany jako część ostrzeżenia lub błędu. Jeśli na przykład używasz go z poprzednimi definicjami, następujący kod generuje dwa ostrzeżenia i jeden błąd:
' Generates 2 warnings:
' Dim a As New A
' Generate no errors or warnings:
Dim b As New B
b.NewMethod()
' Generates an error, terminating compilation:
' b.OldMethod()
Generowane są dwa ostrzeżenia dla klasy A : jeden dla deklaracji odwołania do klasy i jeden dla konstruktora klasy.
Atrybut Obsolete może być używany bez argumentów, ale zaleca się podanie wyjaśnienia, dlaczego element jest przestarzały i co należy użyć zamiast niego.
Atrybut Obsolete jest atrybutem pojedynczego użycia i może być stosowany do dowolnej jednostki, która zezwala na atrybuty.
Obsolete to alias dla elementu ObsoleteAttribute.
Atrybut warunkowy
Atrybut Conditional sprawia, że wykonanie metody jest zależne od identyfikatora przetwarzania wstępnego. Atrybut Conditional jest aliasem dla ConditionalAttributeelementu i można go zastosować do metody lub klasy atrybutów.
W tym przykładzie Conditional jest stosowany do metody w celu włączenia lub wyłączenia wyświetlania informacji diagnostycznych specyficznych dla programu:
#Const TRACE_ON = True
Imports System.Diagnostics
Module TestConditionalAttribute
Public Class Trace
<Conditional("TRACE_ON")>
Public Shared Sub Msg(ByVal msg As String)
Console.WriteLine(msg)
End Sub
End Class
Sub Main()
Trace.Msg("Now in Main...")
Console.WriteLine("Done.")
End Sub
End Module
TRACE_ON Jeśli identyfikator nie jest zdefiniowany, żadne dane wyjściowe śledzenia nie zostaną wyświetlone.
Atrybut Conditional jest często używany z identyfikatorem DEBUG w celu włączenia funkcji śledzenia i rejestrowania w wersjach debugowania, ale nie w wersjach wydania, w następujący sposób:
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
Gdy wywoływana jest metoda oznaczona jako warunkowa, obecność lub brak określonego symbolu przetwarzania wstępnego określa, czy wywołanie jest dołączone, czy pominięte. Jeśli symbol jest zdefiniowany, wywołanie jest dołączane; w przeciwnym razie jest pomijane. Użycie Conditional to czystsza, bardziej elegancka i mniej podatna na błędy alternatywa dla ujęć metod wewnątrz #if…#endif bloków, w następujący sposób:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
Metoda warunkowa musi być metodą w deklaracji klasy lub struktury i nie może mieć wartości zwracanej.
Używanie wielu identyfikatorów
Jeśli metoda ma wiele Conditional atrybutów, wywołanie metody jest uwzględniane, jeśli zdefiniowano co najmniej jeden z symboli warunkowych (innymi słowy, symbole są logicznie połączone za pomocą operatora OR). W tym przykładzie obecność metody A lub B spowoduje wywołanie metody:
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
Aby osiągnąć efekt logicznego łączenia symboli przy użyciu operatora AND, można zdefiniować metody warunkowe szeregowe. Na przykład druga metoda poniżej zostanie wykonana tylko wtedy, gdy zdefiniowano zarówno A, jak i B.
<Conditional("A")>
Shared Sub DoIfA()
DoIfAandB()
End Sub
<Conditional("B")>
Shared Sub DoIfAandB()
' Code to execute when both A and B are defined...
End Sub
Używanie warunkowego z klasami atrybutów
Atrybut Conditional można również zastosować do definicji klasy atrybutu. W tym przykładzie niestandardowy atrybut Documentation doda informacje tylko do metadanych, jeśli zdefiniowano DEBUG.
<Conditional("DEBUG")>
Public Class Documentation
Inherits System.Attribute
Private text As String
Sub New(ByVal doc_text As String)
text = doc_text
End Sub
End Class
Class SampleClass
' This attribute will only be included if DEBUG is defined.
<Documentation("This method displays an integer.")>
Shared Sub DoWork(ByVal i As Integer)
System.Console.WriteLine(i)
End Sub
End Class
Atrybuty informacji o dzwoniącym
Za pomocą atrybutów informacji o obiekcie wywołującym można uzyskać informacje o obiekcie wywołującym metodę. Możesz uzyskać ścieżkę pliku kodu źródłowego, numer wiersza w kodzie źródłowym i nazwę członka wywołującego.
Aby uzyskać informacje o wywołującym członku, należy użyć atrybutów, które są oparte na parametrach opcjonalnych. Każdy opcjonalny parametr określa wartość domyślną. W poniższej tabeli wymieniono atrybuty "Informacje o wywołującym" zdefiniowane w przestrzeni nazw System.Runtime.CompilerServices.
| Atrybut | Opis | Typ |
|---|---|---|
| CallerFilePathAttribute | Pełna ścieżka pliku źródłowego zawierającego obiekt wywołujący. Jest to ścieżka w czasie kompilacji. | String |
| CallerLineNumberAttribute | Numer wiersza w pliku źródłowym, z którego jest wywoływana metoda. | Integer |
| CallerMemberNameAttribute | Nazwa metody lub nazwa właściwości obiektu wywołującego. Aby uzyskać więcej informacji, zobacz Caller Information (Visual Basic). | String |
| CallerArgumentExpressionAttribute | Wyrażenie używane przez funkcję wywołującą dla argumentu. Aby uzyskać więcej informacji, zobacz Caller Information (Visual Basic). | String |
Aby uzyskać więcej informacji na temat atrybutów informacji o obiekcie wywołującym, zobacz Informacje o obiekcie wywołującym (Visual Basic).
Atrybuty języka Visual Basic
W poniższej tabeli wymieniono atrybuty specyficzne dla języka Visual Basic.
| Atrybut | Przeznaczenie |
|---|---|
| ComClassAttribute | Wskazuje kompilatorowi, że klasa powinna być uwidoczniona jako obiekt COM. |
| HideModuleNameAttribute | Umożliwia dostęp do elementów członkowskich modułu przy użyciu tylko kwalifikacji wymaganych do tego modułu. |
| VBFixedStringAttribute | Określa rozmiar ciągu o stałej długości w strukturze do użycia z funkcjami wejściowymi i wyjściowymi plików. |
| VBFixedArrayAttribute | Określa rozmiar stałej tablicy w strukturze do użycia z funkcjami wejściowymi i wyjściowymi plików. |
COMClassAttribute
Użyj COMClassAttribute polecenia , aby uprościć proces tworzenia składników COM z poziomu języka Visual Basic. Obiekty COM znacznie różnią się od zestawów .NET Framework, i bez COMClassAttribute, należy wykonać kilka kroków, aby wygenerować obiekt COM za pomocą języka Visual Basic. W przypadku klas oznaczonych za pomocą COMClassAttribute, kompilator wykonuje wiele z tych kroków automatycznie.
HideModuleNameAttribute
Służy HideModuleNameAttribute do zezwalania na dostęp do elementów członkowskich modułu przy użyciu tylko kwalifikacji potrzebnych do tego modułu.
VBFixedStringAttribute
Użyj VBFixedStringAttribute polecenia , aby wymusić utworzenie ciągu o stałej długości w języku Visual Basic. Ciągi mają domyślnie zmienną długość, a ten atrybut jest przydatny podczas przechowywania ciągów w plikach. Poniższy kod to demonstruje:
Structure Worker
' The runtime uses VBFixedString to determine
' if the field should be written out as a fixed size.
<VBFixedString(10)> Public LastName As String
<VBFixedString(7)> Public Title As String
<VBFixedString(2)> Public Rank As String
End Structure
VBFixedArrayAttribute
Użyj VBFixedArrayAttribute do deklarowania tablic o stałym rozmiarze. Podobnie jak ciągi języka Visual Basic, tablice mają domyślnie zmienną długość. Ten atrybut jest przydatny podczas serializacji lub zapisywania danych w plikach.