Condividi tramite


Applicazione di attributi

Per applicare un attributo a un elemento del codice utilizzare la seguente procedura.

  1. Definire un nuovo attributo o utilizzare un attributo esistente importandone lo spazio dei nomi da .NET Framework.

  2. Applicare l'attributo all'elemento di codice posizionandolo immediatamente prima dell'elemento.

    Ogni linguaggio ha una propria sintassi di attributo. In C++ e C# l'attributo è racchiuso tra parentesi quadre e separato dall'elemento da uno spazio, che può includere un'interruzione di riga. In Visual Basic l'attributo è racchiuso tra parentesi angolari e deve essere presente sulla stessa riga logica. È possibile utilizzare il carattere di continuazione di riga se si desidera inserire un'interruzione di riga. In J# l'attributo viene collegato utilizzando una sintassi di commento speciale.

  3. Specificare i parametri posizionali e i parametri denominati per l'attributo.

    I parametri posizionali sono obbligatori e devono precedere eventuali parametri denominati. Corrispondono ai parametri di uno dei costruttori dell'attributo. I parametri denominati sono facoltativi e corrispondono a proprietà di lettura/scrittura dell'attributo. In C++, C# e J# specificare name=value per ogni parametro facoltativo, dove name è il nome della proprietà. In Visual Basic specificare name:=value.

L'attributo viene emesso nei metadati quando si compila il codice ed è disponibile per Common Language Runtime e qualsiasi strumento o applicazione tramite i servizi di reflection in fase di esecuzione.

Per convenzione tutti i nomi di attributo terminano con Attribute. In diversi linguaggi destinati alla fase di esecuzione, quali Visual Basic e C#, non è tuttavia necessario specificare il nome completo degli attributi. Se si desidera inizializzare, ad esempio, System.ObsoleteAttribute sarà sufficiente farvi riferimento come Obsolete.

Applicazione di un attributo a un metodo

Nell'esempio di codice riportato di seguito si illustra come dichiarare l'attributo System.ObsoleteAttribute, che contrassegna il codice come obsoleto. La stringa "Will be removed in next version" viene passata all'attributo. Questo attributo fa sì che, quando viene chiamato il codice descritto dall'attributo stesso, venga generato un avviso del compilatore che visualizza la stringa passata.

Public Class Example
    ' Specify attributes between square brackets in C#.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version.")>
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class
public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
public ref class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
public:
    [Obsolete("Will be removed in next version.")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};

ref class Test
{
public:
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example::Add(2, 2);
    }
};

int main()
{
    Test::Main();
}

Applicazione di attributi a livello di assembly

Se si desidera applicare un attributo a livello di assembly utilizzare la parola chiave Assembly. Nel codice riportato di seguito si illustra l'attributo AssemblyNameAttribute applicato a livello di assembly.

Imports System.Reflection
<Assembly:AssemblyTitle("My Assembly")>
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
using namespace System::Reflection;
[assembly:AssemblyTitle("My Assembly")];

All'applicazione di questo attributo la stringa "MyAssembly" viene inserita nel manifesto dell'assembly nella porzione del file costituita da metadati. È possibile visualizzare l'attributo sia mediante lo strumento MSIL Disassembler (Ildasm.exe) sia creando un programma personalizzato che recuperi l'attributo.

Vedere anche

Riferimenti

Attributi (C# e Visual Basic)

Concetti

Estensione di metadati mediante attributi

Recupero di informazioni memorizzate negli attributi

Altre risorse

Attributed Programming Concepts