Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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.