Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 sestavení identity
Informační atributy
Atributy manifestu sestavení
Atributy identity sestavy
Tři atributy (se silným názvem, pokud je to vhodné) určují identitu sestavení: název, verze a kultura. 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 kulturu sestavení. Hodnota názvu je však nastavena kompilátorem, integrovaném vývojovém prostředí 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.
| Vlastnost | Úč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 dodatečné informace o společnosti nebo produktu k montáži. Následující tabulka ukazuje informační atributy definované v System.Reflection oboru názvů.
| Vlastnost | Účel |
|---|---|
| AssemblyProductAttribute | Definuje vlastní atribut, který určuje název produktu pro manifest sestavení. |
| AssemblyTrademarkAttribute | Definuje vlastní atribut, který specifikuje ochrannou známku pro manifest 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 montáže. |
| AssemblyCopyrightAttribute | Definuje vlastní atribut, který specifikuje autorské právo pro manifest sestavení. |
| AssemblyFileVersionAttribute | Dává kompilátoru pokyn, aby použil konkrétní číslo verze pro zdroj verze souboru Win32. |
| 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 oboru názvů System.Reflection.
| Vlastnost | Účel |
|---|---|
| AssemblyTitleAttribute | Definuje vlastní atribut, který určuje název sestavení pro manifest sestavení. |
| AssemblyDescriptionAttribute | Definuje vlastní atribut, který specifikuje popis manifestu sestavení. |
| AssemblyConfigurationAttribute | Definuje vlastní atribut, který určuje konfiguraci sestavení (například pro prodej nebo ladění) pro manifest sestavení. |
| AssemblyDefaultAliasAttribute | Definuje přívětivý výchozí alias pro manifest 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. Napří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í B.NewMethod však nevyvolá žádné upozornění ani 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
Pokud není identifikátor TRACE_ON definován, 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 debug buildy, ale ne ve verzích pro vydání, 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ší, elegantnější a méně náchylnou k chybám alternativou oproti uzavírá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.
<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ínek 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í metodě. 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 volajícího člena, použijte atributy, které se aplikují 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ů:
| Vlastnost | Popis | Typ |
|---|---|---|
| CallerFilePathAttribute | Úplná cesta ke zdrojovému 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.
| Vlastnost | Úč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 COMClassAttributepomocí 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
Použijte VBFixedStringAttribute pro vynucení vytvoření řetězce s pevnou délkou ve Visual Basicu. Ř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ů.