Sdílet prostřednictvím


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 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

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ů.

Viz také