Partager via


Attributs communs (Visual Basic)

Cette rubrique décrit les attributs les 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 des classes ou des méthodes ; toutefois, certains attributs sont globaux : ils s’appliquent à un assembly ou un module entier. Par exemple, l’attribut AssemblyVersionAttribute peut être utilisé pour incorporer des informations de version dans un assembly, comme suit :

<Assembly: AssemblyVersion("1.0.0.0")>

Les attributs globaux apparaissent dans le code source après les instructions de niveau Imports supérieur et avant les déclarations 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 dans une seule passe de compilation. 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 appartiennent aux catégories suivantes :

  • Attributs d’identité de l’assembly

  • Attributs d’information

  • Attributs de manifeste de l’assembly

Attributs d’identité d’assembly

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

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

Caractéristique Objectif
AssemblyName Décrit entièrement 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’information

Vous pouvez utiliser des attributs d’information pour fournir des renseignements supplémentaires sur l’entreprise ou le produit pour un assemblage. Le tableau suivant montre les attributs d’information définis dans l’espace System.Reflection de noms.

Caractéristique 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 de marque pour un manifeste d’assembly.
AssemblyInformationalVersionAttribute Définit un attribut personnalisé qui spécifie une version informationnelle 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 Indique au compilateur d’utiliser un numéro de version spécifique pour la ressource de version de fichier Win32.
CLSCompliantAttribute Indique si l’assembly est conforme à la spécification CLS (Common Language Specification).

Attributs du manifeste d’assembly

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

Caractéristique 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 (telle que la vente au détail ou le débogage) 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 marque une entité de programme comme une entité qui n’est plus recommandée pour une utilisation. 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 est appliqué à la Obsolete classe A et à la méthode B.OldMethod. Étant donné que le deuxième argument du constructeur d’attribut appliqué à B.OldMethod est défini truesur , cette méthode provoque une erreur du compilateur, tandis que l’utilisation de la classe A génère simplement un avertissement. Toutefois, l’appel de B.NewMethod ne produit aucun avertissement ni aucune erreur.

La chaîne fournie comme premier argument du constructeur d’attribut s’affiche dans le cadre de l’avertissement ou de 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 ce qu’il faut utiliser à la place.

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

Attribut conditionnel

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 des 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 les fonctionnalités de trace et de journalisation pour les builds de débogage, mais pas dans les builds de mise en production, comme suit :

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

End Sub

Lorsqu’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. L’utilisation Conditional est une alternative plus propre, plus élégante et moins sujette aux erreurs pour placer des méthodes à l’intérieur #if…#endif de blocs, comme ceci :

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

Une méthode conditionnelle doit être une méthode 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 a plusieurs Conditional attributs, un appel à la méthode est inclus si au moins un des symboles conditionnels est défini (en d’autres termes, les symboles sont liés logiquement à l’aide de l’opérateur OR). Dans cet exemple, la présence de l’une ou B l’autre A des méthodes entraîne un appel de méthode :

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

End Sub

Pour obtenir l’effet de liaison logique de symboles à l’aide de l’opérateur AND, vous pouvez définir des méthodes conditionnelles série. Par exemple, la deuxième méthode ci-dessous s’exécute uniquement si les deux A et B sont définies :

<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 conditionnelle avec des classes d’attributs

L’attribut Conditional peut également être appliqué à une définition de classe d’attributs. Dans cet exemple, l’attribut Documentation personnalisé ajoute uniquement des informations aux métadonnées 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

En utilisant des attributs d’informations de l’appelant, vous pouvez obtenir des informations sur l’appelant vers une méthode. Vous pouvez obtenir le chemin du fichier du code source, le numéro de ligne dans le code source et le nom du membre de l’appelant.

Pour obtenir des informations d’appelant de membre, vous utilisez des attributs 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 System.Runtime.CompilerServices de noms :

Caractéristique Descriptif Catégorie
CallerFilePathAttribute Chemin d’accès complet du fichier source qui contient l’appelant. Il s’agit du chemin d’accès 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 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 répertorie les attributs spécifiques à Visual Basic.

Caractéristique Objectif
ComClassAttribute Indique au compilateur que la classe doit être exposée en tant qu’objet COM.
HideModuleNameAttribute Permet aux membres du module d’accéder uniquement à 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

Permet COMClassAttribute de 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 plusieurs étapes pour générer un objet COM à partir de Visual Basic. Pour les classes marquées avec COMClassAttribute, le compilateur effectue automatiquement la plupart de ces étapes.

HideModuleNameAttribute

Permet HideModuleNameAttribute d’accéder aux membres du module en utilisant uniquement la qualification nécessaire pour le module.

VBFixedStringAttribute

Permet VBFixedStringAttribute de 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 ceci :

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

Permet VBFixedArrayAttribute de déclarer des tableaux qui sont fixes en taille. 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