Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento vengono descritti gli attributi più comunemente usati nei programmi Visual Basic.
Attributi globali
La maggior parte degli attributi viene applicata a elementi del linguaggio specifici, ad esempio classi o metodi; Tuttavia, alcuni attributi sono globali, che si applicano a un intero assembly o modulo. Ad esempio, l'attributo AssemblyVersionAttribute può essere usato per incorporare le informazioni sulla versione in un assembly, come illustrato di seguito:
<Assembly: AssemblyVersion("1.0.0.0")>
Gli attributi globali vengono visualizzati nel codice sorgente dopo qualsiasi istruzione di primo livello Imports e prima di qualsiasi tipo, modulo o dichiarazione dello spazio dei nomi. Gli attributi globali possono essere visualizzati in più file di origine, ma i file devono essere compilati in un unico passaggio di compilazione. Per i progetti Visual Basic, gli attributi globali vengono in genere inseriti nel file AssemblyInfo.vb (il file viene creato automaticamente quando si crea un progetto in Visual Studio).
Gli attributi dell'assembly sono valori che forniscono informazioni su un assembly. Rientrano nelle categorie seguenti:
Attributi di identità dell'assembly
Attributi informativi
Attributi del manifesto di assemblaggio
Attributi di identità dell'assembly
Tre attributi (con un nome sicuro, se applicabile) determinano l'identità di un assembly: nome, versione e cultura. Questi attributi formano il nome completo dell'assembly e sono necessari quando vi si fa riferimento nel codice. È possibile impostare la versione e la cultura di un assembly usando gli attributi. Tuttavia, il valore del nome viene impostato dal compilatore, dall'IDE di Visual Studio nella finestra di dialogo delle informazioni sull'assembly o dal linker dell'assembly (Al.exe) quando l'assembly viene creato, in base al file che contiene il manifesto dell'assembly. L'attributo AssemblyFlagsAttribute specifica se più copie dell'assembly possono coesistere.
La tabella seguente illustra gli attributi di identità.
| Attributo | Scopo |
|---|---|
| AssemblyName | Descrive completamente l'identità di un assembly. |
| AssemblyVersionAttribute | Specifica la versione di un assembly. |
| AssemblyCultureAttribute | Specifica le impostazioni cultura supportate dall'assembly. |
| AssemblyFlagsAttribute | Specifica se un assembly supporta l'esecuzione side-by-side nello stesso computer, nello stesso processo o nello stesso dominio dell'applicazione. |
Attributi informativi
È possibile utilizzare attributi informativi per fornire informazioni aziendali o sui prodotti aggiuntive per un assemblaggio. La tabella seguente mostra gli attributi informativi definiti nello spazio dei nomi System.Reflection.
| Attributo | Scopo |
|---|---|
| AssemblyProductAttribute | Definisce un attributo personalizzato che specifica un nome di prodotto per un manifesto dell'assembly. |
| AssemblyTrademarkAttribute | Definisce un attributo personalizzato che specifica un marchio per un manifesto dell'assembly. |
| AssemblyInformationalVersionAttribute | Definisce un attributo personalizzato che specifica una versione informativa per un manifesto di assembly. |
| AssemblyCompanyAttribute | Definisce un attributo personalizzato che specifica un nome aziendale per un manifesto dell'assemblaggio. |
| AssemblyCopyrightAttribute | Definisce un attributo personalizzato che specifica un copyright per il manifesto di un assembly. |
| AssemblyFileVersionAttribute | Indica al compilatore di usare un numero di versione specifico per la risorsa della versione del file Win32. |
| CLSCompliantAttribute | Indica se l'assembly è conforme a Common Language Specification (CLS). |
Attributi del manifesto dell'assembly
È possibile utilizzare gli attributi del manifesto dell'assembly per fornire informazioni nel manifesto. Sono inclusi titolo, descrizione, alias predefinito e configurazione. Nella tabella seguente vengono illustrati gli attributi del manifesto dell'assembly definiti nello spazio dei System.Reflection nomi .
| Attributo | Scopo |
|---|---|
| AssemblyTitleAttribute | Definisce un attributo personalizzato che specifica un titolo di assembly per un manifesto di assembly. |
| AssemblyDescriptionAttribute | Definisce un attributo personalizzato che specifica una descrizione di assembly per un manifesto di assembly. |
| AssemblyConfigurationAttribute | Definisce un attributo personalizzato che specifica una configurazione dell'assembly, ad esempio retail o debug, per un manifesto dell'assembly. |
| AssemblyDefaultAliasAttribute | Definisce un alias predefinito intuitivo per un manifesto dell'assembly |
Attributo obsoleto
L'attributo Obsolete contrassegna un'entità del programma come una che non è più consigliata per l'uso. Ogni uso di un'entità contrassegnata come obsoleta genererà successivamente un avviso o un errore, a seconda della configurazione dell'attributo. Per esempio:
<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
In questo esempio l'attributo Obsolete viene applicato alla classe A e al metodo B.OldMethod. Poiché il secondo argomento del costruttore dell'attributo applicato a B.OldMethod è impostato su true, questo metodo genererà un errore del compilatore, mentre l'uso della classe A genererà solo un avviso. Tuttavia la chiamata di B.NewMethod non produrrà né un avviso né un errore.
La stringa fornita come primo argomento del costruttore di attributi verrà visualizzata come parte dell'avviso o dell'errore. Ad esempio, se viene usato con le definizioni precedenti, il codice che segue genera due avvisi e un errore:
' 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()
Vengono generati due avvisi per la classe A: uno per la dichiarazione del riferimento alla classe e uno per il costruttore della classe.
L'attributo Obsolete può essere usato senza argomenti, ma è consigliabile includere una spiegazione del motivo per cui l'elemento è obsoleto e cosa usare.
Obsolete è un attributo monouso e può essere applicato a qualsiasi entità che supporta gli attributi.
Obsolete è un alias per ObsoleteAttribute.
Attributo condizionale
L'attributo Conditional rende l'esecuzione di un metodo dipendente da un identificatore di pre-elaborazione. L'attributo Conditional è un alias per ConditionalAttribute e può essere applicato a un metodo o a una classe Attribute.
In questo esempio viene Conditional applicato a un metodo per abilitare o disabilitare la visualizzazione di informazioni di diagnostica specifiche del programma:
#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
Se l'identificatore TRACE_ON non è definito, non verrà visualizzato alcun output di traccia.
L'attributo Conditional viene spesso usato con l'identificatore DEBUG per abilitare le funzionalità di traccia e registrazione per le compilazioni di debug, ma non nelle build di versione, come illustrato di seguito:
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
Quando viene chiamato un metodo contrassegnato come condizionale, la presenza o l'assenza del simbolo di pre-elaborazione specificato determina se la chiamata viene inclusa o omessa. Se il simbolo è definito la chiamata viene inclusa, in caso contrario viene omessa. Usare Conditional è un'alternativa più pulita, più elegante e meno soggetta a errori rispetto al racchiudere i metodi dentro blocchi #if…#endif, come questo:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
Un metodo condizionale deve essere un metodo in una dichiarazione di classe o struct e non deve avere un valore restituito.
Uso di più identificatori
Se un metodo ha più Conditional attributi, viene inclusa una chiamata al metodo se viene definito almeno uno dei simboli condizionali ( in altre parole, i simboli vengono collegati logicamente usando l'operatore OR). In questo esempio, la presenza di A o B genererà una chiamata al metodo:
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
Per ottenere l'effetto del collegamento logico dei simboli tramite l'operatore AND, è possibile definire metodi condizionali seriali. Ad esempio, il secondo metodo seguente verrà eseguito solo se A e B sono definiti:
<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
Utilizzo di condizioni con classi di attributi
L'attributo Conditional può essere applicato anche a una definizione di classe Attribute. In questo esempio, l'attributo Documentation personalizzato aggiungerà informazioni solo ai metadati se è definito 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
Attributi informazioni chiamante
Usando gli attributi Info Chiamante, è possibile ottenere informazioni sul chiamante di un metodo. È possibile ottenere il percorso del file del codice sorgente, il numero di riga nel codice sorgente e il nome del membro del chiamante.
Per ottenere informazioni sul chiamante membro, usare gli attributi applicati ai parametri facoltativi. Ogni parametro facoltativo specifica un valore predefinito. Nella tabella seguente sono elencati gli attributi delle informazioni chiamante definiti nello spazio dei nomi System.Runtime.CompilerServices.
| Attributo | Descrizione | TIPO |
|---|---|---|
| CallerFilePathAttribute | Percorso completo del file di origine che contiene il chiamante. Questo è il percorso in fase di compilazione. | String |
| CallerLineNumberAttribute | Numero di riga nel file di origine da cui viene chiamato il metodo . | Integer |
| CallerMemberNameAttribute | Nome del metodo o nome della proprietà del chiamante. Per altre informazioni, vedere Informazioni sul chiamante (Visual Basic). | String |
| CallerArgumentExpressionAttribute | Espressione utilizzata dal chiamante per un argomento. Per altre informazioni, vedere Informazioni sul chiamante (Visual Basic). | String |
Per altre informazioni sugli attributi delle informazioni sul chiamante, vedere Informazioni sul chiamante (Visual Basic).For more information about the Caller Info attributes, see Caller Information (Visual Basic).
Attributi di Visual Basic
Nella tabella seguente sono elencati gli attributi specifici di Visual Basic.
| Attributo | Scopo |
|---|---|
| ComClassAttribute | Indica al compilatore che la classe deve essere esposta come oggetto COM. |
| HideModuleNameAttribute | Consente l'accesso ai membri del modulo usando solo la qualifica necessaria per il modulo. |
| VBFixedStringAttribute | Specifica le dimensioni di una stringa a lunghezza fissa in una struttura da utilizzare con le funzioni di input e output dei file. |
| VBFixedArrayAttribute | Specifica le dimensioni di una matrice fissa in una struttura da usare con le funzioni di input e output dei file. |
COMClassAttribute
Usare COMClassAttribute per semplificare il processo di creazione di componenti COM da Visual Basic. Gli oggetti COM sono notevolmente diversi dagli assembly .NET Framework e senza COMClassAttribute, è necessario seguire una serie di passaggi per generare un oggetto COM da Visual Basic. Per le classi contrassegnate con COMClassAttribute, il compilatore esegue automaticamente molti di questi passaggi.
HideModuleNameAttribute
Usare HideModuleNameAttribute per consentire l'accesso ai membri del modulo usando solo la qualifica necessaria per il modulo.
VBFixedStringAttribute
Utilizzare VBFixedStringAttribute per forzare Visual Basic a creare una stringa a lunghezza fissa. Le stringhe sono di lunghezza variabile per impostazione predefinita e questo attributo è utile quando si archiviano stringhe nei file. Il codice seguente illustra quanto segue:
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
Usare VBFixedArrayAttribute per dichiarare matrici di dimensioni fisse. Analogamente alle stringhe di Visual Basic, le matrici sono di lunghezza variabile per impostazione predefinita. Questo attributo è utile durante la serializzazione o la scrittura di dati nei file.