Megosztás a következőn keresztül:


Gyakori attribútumok (Visual Basic)

Ez a témakör a Visual Basic-programokban leggyakrabban használt attribútumokat ismerteti.

Globális attribútumok

A legtöbb attribútum adott nyelvi elemekre, például osztályokra vagy metódusokra van alkalmazva; egyes attribútumok azonban globálisak – egy teljes szerelvényre vagy modulra vonatkoznak. Az attribútum például a AssemblyVersionAttribute verzióinformációk szerelvénybe való beágyazására használható, például a következőhöz:

<Assembly: AssemblyVersion("1.0.0.0")>

A globális attribútumok a forráskódban jelennek meg a legfelső szintű Imports utasítások után, illetve bármilyen típus-, modul- vagy névtérdeklaráció előtt. A globális attribútumok több forrásfájlban is megjelenhetnek, de a fájlokat egyetlen fordítási menetben kell lefordítani. Visual Basic-projektek esetén a globális attribútumok általában a AssemblyInfo.vb fájlba kerülnek (a fájl automatikusan jön létre, amikor projektet hoz létre a Visual Studióban).

A szerelvényattribútumok olyan értékek, amelyek információt nyújtanak egy szerelvényről. Ezek a következő kategóriákba sorolhatók:

  • Szerelvényidentitás-attribútumok

  • Információs attribútumok

  • Összeállítási jegyzék attribútumai

Szerelvényidentitás-attribútumok

A közgyűlés identitását három attribútum határozza meg: név, verzió és kultúra (ha alkalmazható, egy erős névvel). Ezek az attribútumok alkotják a szerelvény teljes nevét, és a kódban való hivatkozáshoz szükségesek. Az összeállítás verziójának és kultúrájának beállításához attribútumokat használhat. A névértéket azonban a fordító, a Visual Studio IDE a szerelvényinformációs párbeszédpanelen, vagy az Assembly Linker (Al.exe) állítja be a szerelvény létrehozásakor, a szerelvényjegyzéket tartalmazó fájl alapján. Az AssemblyFlagsAttribute attribútum azt határozza meg, hogy a szerelvény több példánya is létezhet-e.

Az alábbi táblázat az identitásattribútumokat mutatja be.

Jellemző Cél
AssemblyName Teljes mértékben leírja egy összeállítás identitását.
AssemblyVersionAttribute Egy szerelvény verzióját adja meg.
AssemblyCultureAttribute Meghatározza, hogy a szerelvény mely kultúrát támogatja.
AssemblyFlagsAttribute Megadja, hogy egy szerelvény támogatja-e az egymás melletti végrehajtást ugyanazon a számítógépen, ugyanabban a folyamatban vagy ugyanabban az alkalmazástartományban.

Információs attribútumok

Az információs attribútumokkal további vállalati vagy termékinformációkat adhat meg egy szerelvényhez. Az alábbi táblázat a névtérben System.Reflection definiált információs attribútumokat mutatja be.

Jellemző Cél
AssemblyProductAttribute Olyan egyéni attribútumot határoz meg, amely megadja egy szerelvényjegyzék terméknevét.
AssemblyTrademarkAttribute Olyan egyéni attribútumot határoz meg, amely egy szerelvényjegyzék védjegyét határozza meg.
AssemblyInformationalVersionAttribute Olyan egyéni attribútumot határoz meg, amely egy szerelvényjegyzék információs verzióját adja meg.
AssemblyCompanyAttribute Egyéni attribútumot definiál, amely meghatározza az összeszerelési jegyzék cégnevét.
AssemblyCopyrightAttribute Olyan egyéni attribútumot definiál, amely egy szerelvényjegyzék szerzői jogát határozza meg.
AssemblyFileVersionAttribute Utasítja a fordítót, hogy használjon egy adott verziószámot a Win32 fájlverzió-erőforráshoz.
CLSCompliantAttribute Azt jelzi, hogy a szerelvény megfelel-e a Common Language Specification (CLS) szabványnak.

Szerelvénymanfeszt attribútumai

A szerelvényjegyzék attribútumai segítségével információkat adhat meg a szerelvényjegyzékben. Ide tartozik a cím, a leírás, az alapértelmezett alias és a konfiguráció. Az alábbi táblázat a System.Reflection névtérben definiált szerelvényjegyzék-attribútumokat mutatja be.

Jellemző Cél
AssemblyTitleAttribute Olyan egyéni attribútumot határoz meg, amely egy szerelvényjegyzék szerelvénycímét adja meg.
AssemblyDescriptionAttribute Definiál egy egyéni attribútumot, amely egy szerelvényjegyzék szerelvényleírását adja meg.
AssemblyConfigurationAttribute Definiál egy egyéni attribútumot, amely szerelvénykonfigurációt (például kiskereskedelmi vagy hibakeresési) határoz meg egy szerelvényjegyzékhez.
AssemblyDefaultAliasAttribute Az összeszerelési jegyzékhez tartozó barátságos alapértelmezett alias definiálása

Elavult attribútum

Az Obsolete attribútum olyan programentitást jelöl, amelyet már nem ajánlott használni. Az elavultként megjelölt entitások minden egyes használata figyelmeztetést vagy hibát eredményez az attribútum konfigurálásának módjától függően. Például:

<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

Ebben a példában az attribútum az Obsolete osztályra A és a metódusra B.OldMethodlesz alkalmazva. Mivel az alkalmazott B.OldMethod attribútumkonstruktor második argumentuma a következőre truevan állítva, ez a metódus fordítási hibát okoz, míg az osztály A használata csak figyelmeztetést eredményez. A hívás B.NewMethodazonban nem okoz figyelmeztetést vagy hibát.

Az attribútumkonstruktor első argumentumaként megadott sztring a figyelmeztetés vagy a hiba részeként jelenik meg. Ha például az előző definíciókkal használja, a következő kód két figyelmeztetést és egy hibát generál:

' 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()

Az osztály A két figyelmeztetést generál: egyet az osztályhivatkozás deklarációjára, egyet pedig az osztálykonstruktorra.

Az Obsolete attribútum argumentumok nélkül is használható, de annak magyarázatát is beleértve, hogy miért elavult az elem, és mit érdemes helyette használni.

Az Obsolete attribútum egy egyszer használatos attribútum, és bármely olyan entitásra alkalmazható, amely engedélyezi az attribútumokat. Obsolete egy alias ObsoleteAttribute számára.

Feltételes attribútum

Az Conditional attribútum egy metódus végrehajtását egy előfeldolgozási azonosítótól teszi függővé. A Conditional attribútum a ConditionalAttribute aliasa, és alkalmazható egy metódusra vagy egy attribútumosztályra.

Ebben a példában egy olyan metódusra van alkalmazva, Conditional amely engedélyezi vagy letiltja a programspecifikus diagnosztikai információk megjelenítését:

#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

Ha az TRACE_ON azonosító nincs definiálva, nem jelenik meg nyomkövetési kimenet.

Az Conditional attribútumot gyakran használják a DEBUG azonosítóval a hibakeresési buildekben a nyomkövetés és naplózás engedélyezéséhez, a kiadási buildekben azonban nem, például így:

<Conditional("DEBUG")>
Shared Sub DebugMethod()

End Sub

Feltételesként megjelölt metódus meghívása esetén a megadott előfeldolgozási szimbólum jelenléte vagy hiánya határozza meg, hogy a hívás szerepel-e benne vagy kimaradt-e. Ha a szimbólum definiálva van, a hívás is megjelenik; ellenkező esetben a hívás ki van hagyva. Conditional használata egy tisztább, elegánsabb és kevésbé hibalehetőséget rejtő alternatíva a #if…#endif blokkokba ágyazott módszerekhez, például a következő módon:

#If DEBUG Then
    Sub ConditionalMethod()
    End Sub
#End If

A feltételes metódusnak osztály- vagy szerkezetdeklarációban szereplő metódusnak kell lennie, és nem lehet visszatérési értéke.

Több azonosító használata

Ha egy metódus több Conditional attribútummal is rendelkezik, a rendszer meghívja a metódust, ha a feltételes szimbólumok közül legalább egy definiálva van (más szóval a szimbólumok logikailag össze vannak kapcsolva az OR operátor használatával). Ebben a példában a `A` vagy `B` jelenléte metódushívást eredményez.

<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()

End Sub

A szimbólumok logikai összekapcsolásának hatásának eléréséhez az AND operátor használatával meghatározhatja a sorba rendezett feltételes metódusokat. Az alábbi második metódus például csak akkor lesz végrehajtva, ha mindkettő AB definiálva van:

<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

Feltételes és attribútumosztályok használata

Az Conditional attribútum attribútumosztály-definícióra is alkalmazható. Ebben a példában az egyéni attribútum Documentation csak a DEBUG definiálása esetén ad hozzá adatokat a metaadatokhoz.

<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

Hívó adatainak attribútumai

A Hívó adatai attribútumok használatával adatokat szerezhet be a hívóról egy metódushoz. Beszerezheti a forráskód fájl elérési útját, a forráskód sorszámát és a hívó tagnevét.

A taghívó adatainak lekéréséhez az opcionális paraméterekre alkalmazott attribútumokat kell használnia. Minden választható paraméter egy alapértelmezett értéket ad meg. Az alábbi táblázat a névtérben System.Runtime.CompilerServices definiált hívóinformációs attribútumokat sorolja fel:

Jellemző Leírás típus
CallerFilePathAttribute A hívót tartalmazó forrásfájl teljes elérési útja. Ez a fordítási időben megadott elérési út. String
CallerLineNumberAttribute Annak a forrásfájlnak a sorszáma, amelyből a metódust meghívják. Integer
CallerMemberNameAttribute A hívó metódusneve vagy tulajdonságneve. További információ: Hívóadatok (Visual Basic). String
CallerArgumentExpressionAttribute A hívó által argumentumként használt kifejezés. További információ: Hívóadatok (Visual Basic). String

A Hívó adatai attribútumokról további információt a Hívó adatai (Visual Basic) című témakörben talál.

Visual Basic attribútumok

Az alábbi táblázat a Visual Basicre jellemző attribútumokat sorolja fel.

Jellemző Cél
ComClassAttribute Azt jelzi a fordítónak, hogy az osztályt COM-objektumként kell elérhetővé tenni.
HideModuleNameAttribute A modultagok csak a modulhoz szükséges képesítéssel érhetők el.
VBFixedStringAttribute A rögzített hosszúságú sztring méretét adja meg egy struktúrában a fájlbemeneti és kimeneti függvényekkel való használatra.
VBFixedArrayAttribute Egy rögzített tömb méretét adja meg egy struktúrában, amely fájlbemeneti és kimeneti függvényekkel használható.

COMClassAttribute

A COMClassAttribute COM-összetevők Visual Basicből való létrehozásának folyamatát egyszerűsítheti. A COM-objektumok jelentősen eltérnek a .NET-keretrendszer gyűjteményeitől, és COMClassAttribute nélkül több lépést is követnie kell, hogy COM-objektumot hozzon létre Visual Basicből. A megjelölt COMClassAttributeosztályok esetében a fordító sok lépést automatikusan végrehajt.

HideModuleNameAttribute

Használja a HideModuleNameAttribute-t, hogy a modultagok elérhetők legyenek pusztán a modulhoz szükséges képesítés használatával.

VBFixedStringAttribute

A VBFixedStringAttribute segítségével kényszerítheti a Visual Basic-et, hogy rögzített hosszúságú sztringet hozzon létre. A sztringek alapértelmezés szerint változó hosszúságúak, és ez az attribútum a sztringek fájlokba való tárolásakor hasznos. A következő kód ezt mutatja be:

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

Méretben rögzített tömbök deklarálásához használható VBFixedArrayAttribute . A Visual Basic-sztringekhez hasonlóan a tömbök is alapértelmezés szerint változó hosszúságúak. Ez az attribútum akkor hasznos, ha adatokat szerializál vagy fájlba ír.

Lásd még