Översikt över attribut (Visual Basic)

Attribut ger en kraftfull metod för att associera metadata, eller deklarativ information, med kod (sammansättningar, typer, metoder, egenskaper och så vidare). När ett attribut har associerats med en programentitet kan attributet frågas vid körning med hjälp av en teknik som kallas reflektion. Mer information finns i Reflektion (Visual Basic).

Attribut har följande egenskaper:

  • Attribut lägger till metadata i ditt program. Metadata är information om de typer som definierats i ett program. Alla .NET-sammansättningar innehåller en angiven uppsättning metadata som beskriver de typer och typmedlemmar som definierats i sammansättningen. Du kan lägga till anpassade attribut för att ange eventuell ytterligare information som krävs. Mer information finns i Skapa anpassade attribut (Visual Basic).

  • Du kan använda ett eller flera attribut för hela sammansättningar, moduler eller mindre programelement, till exempel klasser och egenskaper.

  • Attribut kan acceptera argument på samma sätt som metoder och egenskaper.

  • Ditt program kan undersöka sina egna metadata eller metadata i andra program med hjälp av reflektion. Mer information finns i Accessing Attributes by Using Reflection (Visual Basic).

Använda attribut

Attribut kan placeras på de flesta deklarationer, även om ett specifikt attribut kan begränsa de typer av deklarationer som det är giltigt för. I Visual Basic omges ett attribut av vinkelparenteser (<>). Det måste visas omedelbart före det element som det tillämpas på, på samma rad.

I det här exemplet SerializableAttribute används attributet för att tillämpa en specifik egenskap på en klass:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

En metod med attributet DllImportAttribute deklareras så här:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

Mer än ett attribut kan placeras i en deklaration:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

Vissa attribut kan anges mer än en gång för en viss entitet. Ett exempel på ett sådant multiuse-attribut är ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

Anteckning

Enligt konventionen slutar alla attributnamn med ordet "Attribut" för att skilja dem från andra objekt i .NET Framework. Du behöver dock inte ange attributsuffixet när du använder attribut i koden. Motsvarar till [DllImportAttribute]exempel [DllImport] , men DllImportAttribute är attributets faktiska namn i .NET Framework.

Attributparametrar

Många attribut har parametrar som kan vara positionella, namnlösa eller namngivna. Positionsparametrar måste anges i en viss ordning och kan inte utelämnas. namngivna parametrar är valfria och kan anges i valfri ordning. Positionsparametrar anges först. Dessa tre attribut är till exempel likvärdiga:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Den första parametern, DLL-namnet, är positionell och kommer alltid först. de andra namnges. I det här fallet är båda namngivna parametrar som standard false, så de kan utelämnas. Se dokumentationen för det enskilda attributet för information om standardparametervärden.

Attributmål

Målet för ett attribut är den entitet som attributet gäller för. Ett attribut kan till exempel gälla för en klass, en viss metod eller en hel sammansättning. Som standard gäller ett attribut för det element som det föregår. Men du kan också uttryckligen identifiera om ett attribut används för en metod, dess parameter eller dess returvärde.

Använd följande syntax för att uttryckligen identifiera ett attributmål:

<target : attribute-list>

Listan över möjliga target värden visas i följande tabell.

Målvärde Gäller för
assembly Hela sammansättningen
module Aktuell sammansättningsmodul (som skiljer sig från en Visual Basic-modul)

I följande exempel visas hur du använder attribut för sammansättningar och moduler. Mer information finns i Vanliga attribut (Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

Vanliga användningsområden för attribut

Följande lista innehåller några vanliga användningsområden för attribut i kod:

  • Märkningsmetoder som använder WebMethod attributet i webbtjänster för att ange att metoden ska vara anropsbar via SOAP-protokollet. Mer information finns i WebMethodAttribute.

  • Beskriver hur du konverterar metodparametrar när du samverkar med intern kod. Mer information finns i MarshalAsAttribute.

  • Beskriva COM-egenskaperna för klasser, metoder och gränssnitt.

  • Anropa ohanterad kod med hjälp av DllImportAttribute klassen .

  • Beskriva sammansättningen med avseende på titel, version, beskrivning eller varumärke.

  • Beskriver vilka medlemmar i en klass som ska serialiseras för beständighet.

  • Beskriver hur du mappar mellan klassmedlemmar och XML-noder för XML-serialisering.

  • Beskriva säkerhetskrav för metoder.

  • Ange egenskaper som används för att framtvinga säkerhet.

  • Kontrollera optimeringar av JIT-kompilatorn (just-in-time) så att koden förblir enkel att felsöka.

  • Hämta information om anroparen till en metod.

Mer information finns i:

Se även