Partager via


CodeElement2.ElementID, propriété

Obtient une valeur qui identifie l'élément de manière unique. Non implémenté en Visual C#.

Espace de noms :  EnvDTE80
Assembly :  EnvDTE80 (dans EnvDTE80.dll)

Syntaxe

'Déclaration
ReadOnly Property ElementID As String
    Get
string ElementID { get; }
property String^ ElementID {
    String^ get ();
}
abstract ElementID : string
function get ElementID () : String

Valeur de propriété

Type : System.String
Chaîne qui représente la valeur unique de l'élément.

Notes

La propriété ElementID est une valeur qui est calculée en fonction du nom de l'élément et d'autres informations qui identifient l'élément de manière unique. Le calcul exact de l'ID varie en fonction des langages.

Cet ID est utilisé par les clients du modèle de code pour assurer le suivi des éléments sans conserver de références. Il est inclus dans les événements du modèle de code pour informer le code client de l'élément qui est en cours de modification. De nouveaux ID sont fournis lorsqu'ils sont créés.

La valeur de la propriété ElementID ne doit pas être considérée comme permanente. Elle est susceptible de changer chaque fois que le modèle de code est créé pour un projet et peut également changer au cours de la session en cours. Un événement ElementChanged se produit chaque fois que ElementID change.

Notes

Vous ne pouvez pas appeler RenameSymbol ou ElementID à liaison tardive. (Par exemple, DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2").) Vous devez effectuer un cast explicite de l'objet en l'interface CodeElement2 avant d'effectuer l'appel.

Les éléments de code dans EnvDTE80 (ci-après dénommés objets Code*2) dérivent de ceux de EnvDTE. (Par exemple, CodeClass2 dérive de CodeClass, et CodeElement2 dérive de CodeElement.) En interne dans Visual Studio, tous les éléments de code (dans les deux assemblys) sont castés les uns aux autres en CodeElement2. Ainsi, logiquement, c'est au bout du compte comme si CodeClass2, par exemple, dérivait de CodeElement2.

Étant donné que les deux éléments figurent en réalité dans deux hiérarchies d'héritage séparées, toutefois, le latebinder ne peut pas rechercher de méthodes CodeElement2 sur les objets Code*2. EnvDTE fonctionne essentiellement de la même façon, mais l'utilisation de macros de pré-processeur autorise les interfaces à être définies de façon à ce que les méthodes héritées soient définies explicitement sur toutes les interfaces connexes pour lesquelles les conversions existent. Les interfaces EnvDTE80 sont définies à l'aide d'un modèle d'héritage similaire, mais sans utilisation d'instructions de pré-processeur. Cette solution est plus élégante puisqu'elle élimine les propriétés redondantes, mais le résultat est que les propriétés ne peuvent pas être appelées à liaison tardive. Pour contourner ce problème, effectuez un cast explicite de l'objet en interface CodeElement2 avant d'effectuer l'appel.

En outre, les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterminables après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées. Pour plus d'informations, consultez la section Les valeurs d'élément de modèle de code peuvent être modifiées de la rubrique Découverte de code à l'aide du modèle de code (Visual Basic).

Sécurité .NET Framework

Voir aussi

Référence

CodeElement2 Interface

EnvDTE80, espace de noms

Autres ressources

Comment : compiler et exécuter les exemples de code du modèle objet Automation

Découverte de code à l'aide du modèle de code (Visual Basic)

Découverte de code à l'aide du modèle de code (Visual C#)