Panoramica degli attributi (Visual Basic)Attributes overview (Visual Basic)

Gli attributi offrono un metodo efficace per l'associazione di metadati o informazioni dichiarative con il codice (assembly, tipi, metodi, proprietà e così via).Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods, properties, and so forth). Dopo aver associato un attributo a un'entità di programma, in fase di esecuzione è possibile eseguire una query su tale attributo usando una tecnica denominata reflection.After an attribute is associated with a program entity, the attribute can be queried at run time by using a technique called reflection. Per altre informazioni, vedere Reflection (Visual Basic).For more information, see Reflection (Visual Basic).

Di seguito sono riportate le proprietà degli attributi:Attributes have the following properties:

  • Gli attributi aggiungono metadati al programma.Attributes add metadata to your program. I metadati sono informazioni relative ai tipi definiti in un programma.Metadata is information about the types defined in a program. Tutti gli assembly .NET contengono un set specificato di metadati che descrive i tipi e membri dei tipi definiti nell'assembly.All .NET assemblies contain a specified set of metadata that describes the types and type members defined in the assembly. È possibile aggiungere attributi personalizzati per specificare altre informazioni eventualmente necessarie.You can add custom attributes to specify any additional information that is required. Per altre informazioni, vedere Creazione di attributi personalizzati (Visual Basic).For more information, see, Creating Custom Attributes (Visual Basic).

  • È possibile applicare uno o più attributi a interi assembly, moduli o elementi di programma di minori dimensioni, ad esempio classi e proprietà.You can apply one or more attributes to entire assemblies, modules, or smaller program elements such as classes and properties.

  • Gli attributi possono accettare argomenti nello stesso modo dei metodi e delle proprietà.Attributes can accept arguments in the same way as methods and properties.

  • Il programma può esaminare i propri metadati oppure i metadati di un altro programma tramite reflection.Your program can examine its own metadata or the metadata in other programs by using reflection. Per altre informazioni, vedere Accesso agli attributi tramite reflection (Visual Basic).For more information, see Accessing Attributes by Using Reflection (Visual Basic).

Uso degli attributiUsing Attributes

È possibile usare attributi nella maggior parte delle dichiarazioni, anche se la validità di un attributo specifico può essere limitata ad alcuni tipi di dichiarazione.Attributes can be placed on most any declaration, though a specific attribute might restrict the types of declarations on which it is valid. In Visual Basic un attributo è racchiuso tra parentesi angolari (< >)In Visual Basic, an attribute is enclosed in angle brackets (< >). e deve apparire immediatamente prima dell'elemento a cui viene applicato, sulla stessa riga.It must appear immediately before the element to which it is applied, on the same line.

Nell'esempio seguente l'attributo SerializableAttribute viene usato per applicare una caratteristica specifica a una classe:In this example, the SerializableAttribute attribute is used to apply a specific characteristic to a class:

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

Un metodo con l'attributo DllImportAttribute è dichiarato come segue:A method with the attribute DllImportAttribute is declared like this:

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

In una dichiarazione è possibile inserire più attributi:More than one attribute can be placed on a declaration:

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

Alcuni attributi possono essere specificati più volte per una stessa entità.Some attributes can be specified more than once for a given entity. Un esempio di attributo multiuso è ConditionalAttribute:An example of such a multiuse attribute is ConditionalAttribute:

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

Nota

Per convenzione tutti i nomi di attributo terminano con la parola "Attribute", in modo che sia possibile distinguerli da altri elementi di .NET Framework.By convention, all attribute names end with the word "Attribute" to distinguish them from other items in the .NET Framework. Tuttavia, quando gli attributi vengono usati nel codice, non è necessario specificare il suffisso Attribute.However, you do not need to specify the attribute suffix when using attributes in code. Ad esempio, [DllImport] è equivalente a [DllImportAttribute], mentre DllImportAttribute è il nome effettivo dell'attributo in .NET Framework.For example, [DllImport] is equivalent to [DllImportAttribute], but DllImportAttribute is the attribute's actual name in the .NET Framework.

Parametri degli attributiAttribute Parameters

Diversi attributi dispongono di parametri, che possono essere posizionali, senza nome o denominati.Many attributes have parameters, which can be positional, unnamed, or named. I parametri posizionali devono essere specificati in un determinato ordine e non possono essere omessi. I parametri denominati sono invece facoltativi e possono essere specificati in qualsiasi ordine.Any positional parameters must be specified in a certain order and cannot be omitted; named parameters are optional and can be specified in any order. I parametri posizionali vengono specificati per primi.Positional parameters are specified first. I tre attributi seguenti, ad esempio, sono equivalenti:For example, these three attributes are equivalent:

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

Il primo parametro, ovvero il nome della DLL, è posizionale ed è sempre specificato per primo. Gli altri parametri sono denominati.The first parameter, the DLL name, is positional and always comes first; the others are named. In questo caso, entrambi i parametri denominati sono impostati automaticamente su false e possono quindi essere omessi.In this case, both named parameters default to false, so they can be omitted. Per informazioni sui valori predefiniti dei parametri, fare riferimento alla documentazione di ciascun attributo.Refer to the individual attribute's documentation for information on default parameter values.

Destinazioni degli attributiAttribute Targets

La destinazione di un attributo è l'entità a cui tale attributo viene applicato.The target of an attribute is the entity to which the attribute applies. Un attributo, ad esempio, può essere applicato a una classe, a un metodo particolare o a un intero assembly.For example, an attribute may apply to a class, a particular method, or an entire assembly. Per impostazione predefinita, un attributo viene applicato all'elemento che lo segue.By default, an attribute applies to the element that it precedes. È tuttavia possibile identificare in modo esplicito, ad esempio, se un attributo viene applicato a un metodo, al relativo parametro o al relativo valore restituito.But you can also explicitly identify, for example, whether an attribute is applied to a method, or to its parameter, or to its return value.

Per identificare in modo esplicito la destinazione di un attributo, usare la sintassi seguente:To explicitly identify an attribute target, use the following syntax:

<target : attribute-list>  

Nella tabella seguente sono elencati i possibili valori di target.The list of possible target values is shown in the following table.

Valore di destinazioneTarget value Si applica aApplies to
assembly Intero assemblyEntire assembly
module Modulo dell'assembly corrente (diverso da un modulo di Visual Basic)Current assembly module (which is different from a Visual Basic Module)

Nell'esempio seguente viene illustrato come applicare attributi ad assembly e moduli.The following example shows how to apply attributes to assemblies and modules. Per altre informazioni, vedere Attributi comuni (Visual Basic).For more information, see Common Attributes (Visual Basic).

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

Usi comuni degli attributiCommon Uses for Attributes

Di seguito vengono elencati alcuni degli usi comuni degli attributi nel codice:The following list includes a few of the common uses of attributes in code:

  • Contrassegno dei metodi mediante l'attributo WebMethod nei servizi Web per indicare che è possibile chiamare il metodo tramite il protocollo SOAP.Marking methods using the WebMethod attribute in Web services to indicate that the method should be callable over the SOAP protocol. Per altre informazioni, vedere WebMethodAttribute.For more information, see WebMethodAttribute.

  • Descrizione della procedura di marshalling dei parametri del metodo durante l'interazione con il codice nativo.Describing how to marshal method parameters when interoperating with native code. Per altre informazioni, vedere MarshalAsAttribute.For more information, see MarshalAsAttribute.

  • Descrizione delle proprietà COM per classi, metodi e interfacce.Describing the COM properties for classes, methods, and interfaces.

  • Chiamata al codice non gestito che usa la classe DllImportAttribute.Calling unmanaged code using the DllImportAttribute class.

  • Descrizione dell'assembly con indicazione di titolo, versione, descrizione o marchio.Describing your assembly in terms of title, version, description, or trademark.

  • Descrizione dei membri della classe da serializzare per la persistenza.Describing which members of a class to serialize for persistence.

  • Descrizione della procedura di mapping tra membri di una classe e nodi XML per la serializzazione XML.Describing how to map between class members and XML nodes for XML serialization.

  • Descrizione dei requisiti di sicurezza per i metodi.Describing the security requirements for methods.

  • Definizione delle caratteristiche usate per garantire la sicurezza.Specifying characteristics used to enforce security.

  • Controllo delle ottimizzazioni tramite il compilatore JIT (Just-In-Time), in modo da garantire un semplice debug del codice.Controlling optimizations by the just-in-time (JIT) compiler so the code remains easy to debug.

  • Recupero di informazioni relative al chiamante di un metodo.Obtaining information about the caller to a method.

Per altre informazioni, vedere:For more information, see:

Vedere ancheSee also