Partager via


Attributs courants (Visual Basic)

Cette rubrique décrit les attributs le plus couramment utilisés dans les programmes Visual Basic.

Attributs globaux

La plupart des attributs sont appliqués à des éléments de langage spécifiques, tels que les classes ou les méthodes. Toutefois, certains attributs sont globaux : ils s’appliquent à la totalité d’un assembly ou d’un module. Par exemple, l’attribut AssemblyVersionAttribute peut être utilisé pour incorporer des informations de version dans un assembly, de la manière suivante :

<Assembly: AssemblyVersion("1.0.0.0")>

Les attributs globaux apparaissent dans le code source après toute instruction Imports de niveau supérieur et avant toute déclaration de type, de module ou d’espace de noms. Les attributs globaux peuvent apparaître dans plusieurs fichiers sources, mais les fichiers doivent être compilés en un seul passage. Pour les projets Visual Basic, les attributs globaux sont généralement placés dans le fichier AssemblyInfo.vb (le fichier est créé automatiquement lorsque vous créez un projet dans Visual Studio).

Les attributs d’assembly sont des valeurs qui fournissent des informations sur un assembly. Ils sont répartis dans les catégories suivantes :

  • Attributs d’identité de l’assembly

  • Attributs d’informations

  • Attributs de manifeste de l’assembly

Attributs d’identité de l’assembly

Trois attributs (avec un nom fort, le cas échéant), déterminent l’identité d’un assembly : nom, version et culture. Ces attributs constituent le nom complet de l’assembly et sont obligatoires quand vous le référencez le code. Vous pouvez définir la version et la culture d’un assembly en utilisant des attributs. Toutefois, la valeur de nom est définie par le compilateur, l’IDE de Visual Studio dans la boîte de dialogue Informations sur l’assembly ou l’utilitaire Assembly Linker (Al.exe) lors de la création de l’assembly, en fonction du fichier qui contient le manifeste de l’assembly. L’attribut AssemblyFlagsAttribute spécifie si plusieurs copies de l’assembly peuvent coexister.

Le tableau suivant présente les attributs d’identité.

Attribut Objectif
AssemblyName Décrit intégralement l’identité d’un assembly.
AssemblyVersionAttribute Spécifie la version d’un assembly.
AssemblyCultureAttribute Spécifie la culture prise en charge par l'assembly.
AssemblyFlagsAttribute Spécifie si un assembly prend en charge l’exécution côte à côte sur le même ordinateur, dans le même processus ou dans le même domaine d’application.

Attributs d’informations

Vous pouvez utiliser les attributs d’informations pour fournir des informations supplémentaires sur le produit ou la société de l’assembly. Le tableau suivant présente les attributs d’informations définis dans l’espace de noms System.Reflection.

Attribut Objectif
AssemblyProductAttribute Définit un attribut personnalisé qui spécifie un nom de produit pour un manifeste d’assembly.
AssemblyTrademarkAttribute Définit un attribut personnalisé qui spécifie une marque pour un manifeste d’assembly.
AssemblyInformationalVersionAttribute Définit un attribut personnalisé qui spécifie une version d’informations pour un manifeste d’assembly.
AssemblyCompanyAttribute Définit un attribut personnalisé qui spécifie un nom de société pour un manifeste d’assembly.
AssemblyCopyrightAttribute Définit un attribut personnalisé qui spécifie un copyright pour un manifeste d’assembly.
AssemblyFileVersionAttribute Demande au compilateur d’utiliser un numéro de version spécifique pour la ressource de la version du fichier Win32.
CLSCompliantAttribute Indique si l’assembly est conforme à la spécification CLS (Common Language Specification).

Attributs de manifeste de l’assembly

Vous pouvez utiliser les attributs de manifeste de l’assembly pour fournir des informations dans le manifeste de l’assembly. Cela inclut le titre, la description, l’alias par défaut et la configuration. Le tableau suivant présente les attributs de manifeste de l’assembly définis dans l’espace de noms System.Reflection.

Attribut Objectif
AssemblyTitleAttribute Définit un attribut personnalisé qui spécifie un titre d’assembly pour un manifeste d’assembly.
AssemblyDescriptionAttribute Définit un attribut personnalisé qui spécifie une description d’assembly pour un manifeste d’assembly.
AssemblyConfigurationAttribute Définit un attribut personnalisé qui spécifie une configuration d’assembly (telles que retail ou debug) pour un manifeste d’assembly.
AssemblyDefaultAliasAttribute Définit un alias par défaut convivial pour un manifeste d’assembly.

Attribut obsolète

L’attribut Obsolete est utilisé pour marquer une entité de programme comme étant une entité dont l’utilisation n’est plus recommandée. Chaque utilisation d’une entité marquée comme obsolète génère par la suite un avertissement ou une erreur, selon la façon dont l’attribut est configuré. Par exemple :

<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

Dans cet exemple, l’attribut Obsolete est appliqué à la classe A et à la méthode B.OldMethod. Comme le deuxième argument du constructeur d’attribut appliqué à B.OldMethod a la valeur true, l’utilisation de cette méthode entraîne une erreur du compilateur, alors que l’utilisation de la classe A n’entraîne qu’un avertissement. Toutefois, l’appel de B.NewMethod ne produit aucun avertissement ni aucune erreur.

La chaîne fournie comme premier argument au constructeur d’attribut est affichée dans l’avertissement ou dans l’erreur. Par exemple, utilisé avec les définitions précédentes, le code suivant génère deux avertissements et une erreur :

' 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()

Deux avertissements pour la classe A sont générés : un pour la déclaration de la référence de classe et un pour le constructeur de classe.

L’attribut Obsolete peut être utilisé sans arguments, mais il est recommandé d’inclure une explication sur la raison pour laquelle l’élément est obsolète et d’indiquer quoi utiliser en remplacement.

Obsolete est un attribut à usage unique et peut être appliqué à toute entité qui autorise des attributs. Obsolete est un alias pour ObsoleteAttribute.

Attribut Conditional

Avec l’attribut Conditional, l’exécution d’une méthode dépend d’un identificateur de prétraitement. L’attribut Conditional est un alias pour ConditionalAttribute, et peut être appliqué à une méthode ou une classe d’attributs.

Dans cet exemple, Conditional est appliqué à une méthode pour activer ou désactiver l’affichage d’informations de diagnostic spécifiques au programme :

#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

Si l’identificateur TRACE_ON n’est pas défini, aucune sortie de trace n’est affichée.

L’attribut Conditional est souvent utilisé avec l’identificateur DEBUG pour activer la trace et enregistrer des fonctionnalités pour les versions Debug, mais pas pour les versions Release, de la manière suivante :

<Conditional("DEBUG")>
Shared Sub DebugMethod()

End Sub

Quand une méthode marquée comme conditionnelle est appelée, la présence ou l’absence du symbole de prétraitement spécifié détermine si l’appel est inclus ou omis. Si le symbole est défini, l’appel est inclus ; sinon, il est omis. Conditional offre une solution à la fois plus efficace, plus élégante et moins sujette aux erreurs que les méthodes englobantes contenues dans les blocs #if…#endif, tels que le suivant :

#If DEBUG Then
    Sub ConditionalMethod()
    End Sub
#End If

Une méthode conditionnelle doit figurer dans une déclaration de classe ou de struct, et ne doit pas avoir de valeur de retour.

Utilisation de plusieurs identificateurs

Si une méthode comporte plusieurs attributs Conditional, un appel à cette dernière est inclus si l’un des symboles conditionnels au moins est défini (en d’autres termes, si les symboles sont liés logiquement par l’opérateur OR). Dans cet exemple, la présence de A ou de B entraîne un appel de méthode :

<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()

End Sub

Pour lier logiquement les symboles au moyen de l’opérateur AND, vous pouvez définir des méthodes conditionnelles en série. Par exemple, la deuxième méthode ci-dessous ne s’exécute que si A et B sont définis :

<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

Utilisation de Conditional avec des classes d’attributs

L’attribut Conditional peut également être appliqué à une définition de classe d’attributs. Dans cet exemple, l’attribut personnalisé Documentation n’ajoute des informations aux métadonnées que si DEBUG est défini.

<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

Attributs d’informations de l’appelant

À l'aide des attributs d'informations de l'appelant, vous pouvez obtenir des informations sur l'appelant d'une méthode. Vous pouvez obtenir le chemin du fichier de code source, le numéro de ligne dans le code source, ainsi que le nom de membre de l’appelant.

Pour obtenir des informations de membre de l’appelant, vous utilisez les attributs qui sont appliqués aux paramètres facultatifs. Chaque paramètre facultatif spécifie une valeur par défaut. Le tableau suivant répertorie les attributs d'informations de l'appelant définis dans l'espace de noms System.Runtime.CompilerServices :

Attribut Description Type
CallerFilePathAttribute Chemin d’accès complet du fichier source qui contient l’appelant. C’est le chemin au moment de la compilation. String
CallerLineNumberAttribute Numéro de ligne dans le fichier source à partir duquel la méthode est appelée. Integer
CallerMemberNameAttribute Nom de la méthode ou nom de la propriété de l’appelant. Pour plus d’informations, consultez Informations de l’appelant (Visual Basic). String
CallerArgumentExpressionAttribute Expression utilisée par l’appelant pour un argument. Pour plus d’informations, consultez Informations de l’appelant (Visual Basic). String

Pour plus d’informations sur les attributs d’informations de l’appelant, consultez Informations de l’appelant (Visual Basic).

Attributs Visual Basic

Le tableau suivant liste les attributs spécifiques à Visual Basic.

Attribut Objectif
ComClassAttribute Indique au compilateur que la classe doit être exposée en tant qu’objet COM.
HideModuleNameAttribute Permet aux membres du module d’être accessibles seulement à l’aide de la qualification nécessaire pour le module.
VBFixedStringAttribute Spécifie la taille d’une chaîne de longueur fixe dans une structure à utiliser avec les fonctions d’entrée et de sortie de fichier.
VBFixedArrayAttribute Spécifie la taille d’un tableau fixe dans une structure à utiliser avec les fonctions d’entrée et de sortie de fichier.

COMClassAttribute

Utilisez COMClassAttribute pour simplifier le processus de création de composants COM à partir de Visual Basic. Les objets COM sont considérablement différents des assemblys .NET Framework, et sans COMClassAttribute, vous devez suivre un certain nombre d’étapes pour générer un objet COM à partir de Visual Basic. Pour les classes marquées COMClassAttribute, le compilateur effectue un grand nombre de ces étapes automatiquement.

HideModuleNameAttribute

Utilisez HideModuleNameAttribute pour permettre aux membres du module d’être accessibles seulement à l’aide de la qualification nécessaire pour le module.

VBFixedStringAttribute

Utilisez VBFixedStringAttribute pour forcer Visual Basic à créer une chaîne de longueur fixe. Les chaînes sont de longueur variable par défaut, et cet attribut est utile lors du stockage de chaînes dans des fichiers. Le code suivant illustre cela :

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

Utilisez VBFixedArrayAttribute pour déclarer des tableaux dont la taille est fixe. Comme les chaînes Visual Basic, les tableaux sont de longueur variable par défaut. Cet attribut est utile lors de la sérialisation ou de l’écriture de données dans des fichiers.

Voir aussi