Application des attributs

Mise à jour : novembre 2007

Utilisez le processus suivant pour appliquer un attribut à un élément de votre code.

  1. Définissez un nouvel attribut ou utilisez un attribut existant en important son espace de noms à partir du .NET Framework.

  2. Appliquez l'attribut à l'élément de code en le plaçant immédiatement avant l'élément.

    Chaque langage possède sa propre syntaxe d'attribut. En C++ et C#, l'attribut est entouré de crochets et séparé de l'élément par un espace blanc qui peut inclure un saut de ligne. En Visual Basic, l'attribut est entouré par des crochets angulaires et doit figurer sur la même ligne logique ; le caractère de continuation de ligne peut être utilisé si vous souhaitez un saut de ligne. En J#, l'attribut est attaché à l'aide d'une syntaxe de commentaire spéciale.

  3. Spécifiez des paramètres positionnels et des paramètres nommés pour l'attribut.

    Les paramètres positionnels sont obligatoires et doivent être placés avant tout paramètre nommé ; ils correspondent aux paramètres de l'un des constructeurs de l'attribut. Les paramètres nommés sont facultatifs et correspondent aux propriétés en lecture/écriture de l'attribut. En C++, C# et J#, spécifiez name=value, où name est le nom de la propriété, pour chaque paramètre facultatif. En Visual Basic, spécifiez name:=value.

L'attribut est émis dans les métadonnées lorsque vous compilez votre code puis mis à disposition du Common Language Runtime et des applications ou outils personnalisés par l'intermédiaire des services de réflexion de l'exécution.

Par convention, tous les noms d'attributs se terminent par Attribute. Cependant, plusieurs langages qui ciblent le runtime, tels que Visual Basic et C#, n'exigent pas que vous spécifiiez le nom complet d'un attribut. Par exemple, pour initialiser System.ObsoleteAttribute, il vous suffit de le référencer en tant qu'Obsolete.

Application d'un attribut à une méthode

L'exemple de code suivant montre comment déclarer System.ObsoleteAttribute, qui marque le code comme étant obsolète. La chaîne "Will be removed in next version" est passée à l'attribut. Cet attribut provoque un avertissement du compilateur qui affiche la chaîne passée lorsque le code décrit par l'attribut est appelé.

using System;
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
{
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
using namespace System;
public ref class Example
{
public:
    // Specify attributes between square brackets in C++.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version ")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};
void main()
{
    // This generates a compile-time warning.
    int i = Example::Add(2, 2);
    return;
}
Imports System 
Public Class Example
    ' Specify attributes between angle brackets in Visual Basic,
    ' and keep them on the same logical line.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version ")> _
    Public Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
        Return a + b
    End Function
End Class
Module Test
    Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Module
import System.*;
public class Example
{
    // Specify attributes with comment syntax in J#.
    // This attribute is applied only to the Add method.
    /** @attribute 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 MyInt = Example.Add(2,2); 
    }
}

Application des attributs au niveau de l'assembly

Si vous souhaitez appliquer un attribut au niveau de l'assembly, utilisez le mot clé Assembly. Le code suivant indique le AssemblyNameAttribute appliqué au niveau de l'assembly.

using System.Reflection;
[assembly:AssemblyName("MyAssembly")]
using namespace System::Reflection;
[assembly:AssemblyName("MyAssembly")]
Imports System.Reflection
<Assembly:AssemblyName("MyAssembly")> 
import System.Reflection.*;
/** @assembly AssemblyName("MyAssembly") */

Lorsque cet attribut est appliqué, la chaîne "MyAssembly" est placée dans le manifeste d'assembly, dans la partie métadonnées du fichier. Vous pouvez visualiser l'attribut en utilisant le Désassembleur MSIL (Ildasm.exe) ou en créant un programme personnalisé pour récupérer l'attribut.

Voir aussi

Concepts

Récupération des informations stockées dans les attributs

Application des attributs

Référence

Utilisation d'attributs (Guide de programmation C#)

Attachement des attributs

Autres ressources

Extension des métadonnées à l'aide des attributs

Attributed Programming Concepts