Běžné atributy (Visual Basic)
Toto téma popisuje atributy, které se nejčastěji používají v programech jazyka Visual Basic.
Globální atributy
Většina atributů se používá u konkrétních jazykových prvků, jako jsou třídy nebo metody; Některé atributy jsou však globální – vztahují se na celé sestavení nebo modul. AssemblyVersionAttribute Například atribut lze použít k vložení informací o verzi do sestavení, například takto:
<Assembly: AssemblyVersion("1.0.0.0")>
Globální atributy se ve zdrojovém kódu zobrazí za libovolnými příkazy nejvyšší úrovně Imports
a před deklaracemi libovolného typu, modulu nebo oboru názvů. Globální atributy se můžou objevit ve více zdrojových souborech, ale soubory musí být zkompilovány v rámci jednoho průchodu kompilace. U projektů jazyka Visual Basic jsou globální atributy obecně vloženy do souboru AssemblyInfo.vb (soubor se vytvoří automaticky při vytváření projektu v sadě Visual Studio).
Atributy sestavení jsou hodnoty, které poskytují informace o sestavení. Spadají do následujících kategorií:
Atributy identity sestavení
Informační atributy
Atributy manifestu sestavení
Atributy identity sestavení
Tři atributy (s silným názvem, pokud je k dispozici) určují identitu sestavení: název, verze a jazyková verze. Tyto atributy tvoří úplný název sestavení a jsou vyžadovány při odkazování v kódu. Pomocí atributů můžete nastavit verzi a jazykovou verzi sestavení. Hodnota názvu je však nastavena kompilátorem, integrovaném vývojovém prostředím sady Visual Studio v dialogovém okně Informace o sestavení nebo linker sestavení (Al.exe) při vytvoření sestavení na základě souboru, který obsahuje manifest sestavení. Atribut AssemblyFlagsAttribute určuje, zda může existovat více kopií sestavení.
V následující tabulce jsou uvedeny atributy identity.
Atribut | Účel |
---|---|
AssemblyName | Plně popisuje identitu sestavení. |
AssemblyVersionAttribute | Určuje verzi sestavení. |
AssemblyCultureAttribute | Určuje, která jazyková verze sestavení podporuje. |
AssemblyFlagsAttribute | Určuje, zda sestavení podporuje souběžné spouštění na stejném počítači, ve stejném procesu nebo ve stejné doméně aplikace. |
Informační atributy
Pomocí informačních atributů můžete poskytnout další informace o společnosti nebo produktu pro sestavení. Následující tabulka ukazuje informační atributy definované v System.Reflection oboru názvů.
Atribut | Účel |
---|---|
AssemblyProductAttribute | Definuje vlastní atribut, který určuje název produktu pro manifest sestavení. |
AssemblyTrademarkAttribute | Definuje vlastní atribut, který určuje ochrannou známku manifestu sestavení. |
AssemblyInformationalVersionAttribute | Definuje vlastní atribut, který určuje informační verzi manifestu sestavení. |
AssemblyCompanyAttribute | Definuje vlastní atribut, který určuje název společnosti pro manifest sestavení. |
AssemblyCopyrightAttribute | Definuje vlastní atribut, který určuje autorská práva pro manifest sestavení. |
AssemblyFileVersionAttribute | Dává kompilátoru pokyn, aby pro prostředek verze souboru Win32 použil konkrétní číslo verze. |
CLSCompliantAttribute | Určuje, jestli sestavení vyhovuje specifikaci CLS (Common Language Specification). |
Atributy manifestu sestavení
K poskytnutí informací v manifestu sestavení můžete použít atributy manifestu sestavení. To zahrnuje název, popis, výchozí alias a konfiguraci. Následující tabulka ukazuje atributy manifestu sestavení definované v System.Reflection oboru názvů.
Atribut | Účel |
---|---|
AssemblyTitleAttribute | Definuje vlastní atribut, který určuje název sestavení manifestu sestavení. |
AssemblyDescriptionAttribute | Definuje vlastní atribut, který určuje popis sestavení manifestu sestavení. |
AssemblyConfigurationAttribute | Definuje vlastní atribut, který určuje konfiguraci sestavení (například maloobchodní nebo ladění) pro manifest sestavení. |
AssemblyDefaultAliasAttribute | Definuje popisný výchozí alias manifestu sestavení. |
Zastaralý atribut
Atribut Obsolete
označí entitu programu jako entitu, která se už nedoporučuje používat. Každé použití entity označené zastaralou následně vygeneruje upozornění nebo chybu v závislosti na konfiguraci atributu. Příklad:
<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
V tomto příkladu Obsolete
se atribut použije na třídu A
a metodu B.OldMethod
. Vzhledem k tomu, že druhý argument konstruktoru atributu použitý na B.OldMethod
je nastaven na true
, tato metoda způsobí chybu kompilátoru, zatímco použití třídy A
pouze vytvoří upozornění. Volání však nevyvolá B.NewMethod
žádné upozornění nebo chybu.
Řetězec zadaný jako první argument konstruktoru atributu se zobrazí jako součást upozornění nebo chyby. Když ho například použijete s předchozími definicemi, následující kód vygeneruje dvě upozornění a jednu chybu:
' 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()
Vygenerují se dvě upozornění pro třídu: jedno pro deklaraci odkazu na třídu A
a jedno pro konstruktor třídy.
Atribut Obsolete
lze použít bez argumentů, ale včetně vysvětlení, proč je položka zastaralá a co místo toho použít, se doporučuje.
Atribut Obsolete
je atribut s jedním použitím a lze jej použít u jakékoli entity, která umožňuje atributy. Obsolete
je alias pro ObsoleteAttribute.
Podmíněný atribut
Atribut Conditional
vytvoří spuštění metody závislé na identifikátoru předběžného zpracování. Atribut Conditional
je alias pro ConditionalAttributea lze jej použít pro metodu nebo třídu atributu.
V tomto příkladu se použije u metody, Conditional
která povolí nebo zakáže zobrazení diagnostických informací specifických pro program:
#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
Pokud identifikátor není definovaný, nezobrazí se žádný výstup trasování.
Atribut Conditional
se často používá s identifikátorem DEBUG
k povolení funkcí trasování a protokolování pro sestavení ladění, ale ne v buildech vydaných verzí, například takto:
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
Pokud je volána metoda označená jako podmíněná, přítomnost nebo absence zadaného symbolu předběžného zpracování určuje, zda je volání zahrnuto nebo vynecháno. Pokud je definován symbol, volání je zahrnuto; jinak je volání vynecháno. Použití Conditional
je čistější, elegantnější a méně náchylná k chybám alternativu k ohraničování metod uvnitř #if…#endif
bloků, například takto:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
Podmíněná metoda musí být metoda v deklaraci třídy nebo struktury a nesmí mít návratovou hodnotu.
Použití více identifikátorů
Pokud má metoda více Conditional
atributů, volání metody je zahrnuto, pokud je definován alespoň jeden z podmíněných symbolů (jinými slovy, symboly jsou logicky propojeny pomocí operátoru OR). V tomto příkladu bude přítomnost buď A
nebo B
výsledkem volání metody:
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
Chcete-li dosáhnout efektu logického propojení symbolů pomocí operátoru AND, můžete definovat sériové podmíněné metody. Například druhá níže uvedená metoda se spustí pouze v případě, že jsou definovány obě A
a B
jsou definovány:
<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
Použití podmíněného použití s třídami atributů
Atribut Conditional
lze také použít pro definici třídy atributu. V tomto příkladu vlastní atribut Documentation
přidá informace pouze do metadat, pokud je definována funkce 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
Atributy informací o volajícím
Pomocí atributů Informace o volajícím můžete získat informace o volajícím metody. Můžete získat cestu k souboru zdrojového kódu, číslo řádku ve zdrojovém kódu a název člena volajícího.
Chcete-li získat informace o volajícím člena, použijte atributy, které jsou použity na volitelné parametry. Každý volitelný parametr určuje výchozí hodnotu. Následující tabulka uvádí atributy Informace o volajícím, které jsou definovány v System.Runtime.CompilerServices oboru názvů:
Atribut | Popis | Typ |
---|---|---|
CallerFilePathAttribute | Úplná cesta zdrojového souboru, který obsahuje volajícího. Toto je cesta v době kompilace. | String |
CallerLineNumberAttribute | Číslo řádku ve zdrojovém souboru, ze kterého je volána metoda. | Integer |
CallerMemberNameAttribute | Název metody nebo název vlastnosti volajícího Další informace naleznete v tématu Informace o volajícím (Visual Basic). | String |
CallerArgumentExpressionAttribute | Výraz používaný volajícím pro argument Další informace naleznete v tématu Informace o volajícím (Visual Basic). | String |
Další informace o atributech informace o volajícím naleznete v tématu Informace o volajícím (Visual Basic).
Atributy jazyka Visual Basic
Následující tabulka uvádí atributy, které jsou specifické pro Jazyk Visual Basic.
Atribut | Účel |
---|---|
ComClassAttribute | Označuje kompilátor, že třída by měla být vystavena jako objekt COM. |
HideModuleNameAttribute | Umožňuje přístup k členům modulu pouze s využitím kvalifikace potřebné pro modul. |
VBFixedStringAttribute | Určuje velikost řetězce s pevnou délkou ve struktuře pro použití se vstupními a výstupními funkcemi souboru. |
VBFixedArrayAttribute | Určuje velikost pevného pole ve struktuře pro použití se vstupními a výstupními funkcemi souboru. |
COMClassAttribute
Slouží COMClassAttribute
ke zjednodušení procesu vytváření komponent modelu COM z jazyka Visual Basic. Objekty COM se výrazně liší od sestavení rozhraní .NET Framework a bez COMClassAttribute
, musíte postupovat podle několika kroků pro vygenerování objektu COM z jazyka Visual Basic. U tříd označených COMClassAttribute
pomocí kompilátor provádí mnoho z těchto kroků automaticky.
SkrýtModuleNameAttribute
Umožňuje HideModuleNameAttribute
přístup ke členům modulu pouze pomocí kvalifikace potřebné pro modul.
VBFixedStringAttribute
Slouží VBFixedStringAttribute
k vynucení vytvoření řetězce s pevnou délkou jazyka Visual Basic. Řetězce mají ve výchozím nastavení proměnnou délku a tento atribut je užitečný při ukládání řetězců do souborů. Následující kód ukazuje toto:
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
Slouží VBFixedArrayAttribute
k deklaraci polí, která jsou pevná ve velikosti. Podobně jako řetězce jazyka Visual Basic mají pole ve výchozím nastavení proměnnou délku. Tento atribut je užitečný při serializaci nebo zápisu dat do souborů.