Sdílet prostřednictvím


CodeElement2.ElementID-Eigenschaft

Aktualisiert: November 2007

Ruft einen Wert ab, der das Element eindeutig kennzeichnet. Nicht implementiert in Visual C# oder Visual J#.

Namespace:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.dll)

Syntax

'Declaration
ReadOnly Property ElementID As String
'Usage
Dim instance As CodeElement2
Dim value As String

value = instance.ElementID
string ElementID { get; }
property String^ ElementID {
    String^ get ();
}
function get ElementID () : String

Eigenschaftenwert

Typ: System.String

Eine Zeichenfolge, die den eindeutigen Wert für das Element darstellt.

Hinweise

Die ElementID-Eigenschaft ist ein Wert, der auf der Grundlage des Elementnamens und anderer Informationen berechnet wird, die das Element eindeutig kennzeichnen. Die genaue Berechnung der ID variiert zwischen den Sprachen.

Diese ID wird von Codemodellclients verwendet, um Elemente ohne Beibehaltung von Verweisen zu verfolgen. Sie wird in Codemodellereignisse aufgenommen, um den Clientcode über das geänderte Element zu informieren. Neue IDs werden bereitgestellt, wenn sie erstellt werden.

Der Wert der ElementID-Eigenschaft sollte nicht als permanent betrachtet werden. Der Wert ändert sich wahrscheinlich jedes Mal, wenn das Codemodell für ein Projekt erstellt wird, und er kann sich auch in der aktuellen Sitzung ändern. Ein ElementChanged-Ereignis tritt jedes Mal auf, wenn sich die ElementID ändert.

Hinweis:

Sie können RenameSymbol oder ElementID nicht spät gebunden aufrufen. (Beispiel: DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2")) Sie müssen das Objekt vor dem Aufrufen explizit in die CodeElement2-Schnittstelle umwandeln.

Codeelemente in EnvDTE80 (im Folgenden als Code*2-Objekte bezeichnet) werden von Codeelementen in EnvDTE abgeleitet. (Beispielsweise wird CodeClass2 von CodeClass und CodeElement2 von CodeElement abgeleitet.) In Visual Studio werden alle Codeelemente (in beiden Assemblys) intern in CodeElement2 umgewandelt. Folgerichtig scheint CodeClass2 beispielsweise letztendlich von CodeElement2 abgeleitet zu werden.

Da die beiden Elemente sich jedoch tatsächlich in zwei separaten Vererbungshierarchien befinden, können CodeElement2-Methoden bei Code*2-Objekten nicht spät gebunden aufgerufen werden. EnvDTE wird im Wesentlichen auf die gleiche Weise verwendet, durch die Verwendung von Präprozessormakros können die Schnittstellen jedoch so festgelegt werden, dass vererbte Methoden explizit für alle relevanten Schnittstellen mit vorhandenen Konvertierungen definiert werden. EnvDTE80-Schnittstellen werden unter Verwendung eines ähnlichen Vererbungsschemas definiert, jedoch ohne die Verwendung von Präprozessoranweisungen. Dabei handelt es sich um eine elegantere Lösung, da die redundanten Eigenschaften entfernt werden. Die Eigenschaften können jedoch nicht spät gebunden aufgerufen werden. Wandeln Sie das Objekt vor dem Aufrufen explizit in die CodeElement2-Schnittstelle um, um dieses Problem zu umgehen.

Außerdem können die Werte von Codemodellelementen wie Klassen, Strukturen, Funktionen, Attributen, Delegaten usw. nach bestimmten Bearbeitungsvorgängen nicht deterministisch sein, d. h., dass nicht mehr davon ausgegangen werden kann, dass ihre Werte immer unverändert bleiben. Weitere Informationen finden Sie im Abschnitt zum Änderungsverhalten von Codemodellelementwerten unter Ermitteln von Code über das Codemodell (Visual Basic).

Berechtigungen

Siehe auch

Referenz

CodeElement2-Schnittstelle

CodeElement2-Member

EnvDTE80-Namespace

Weitere Ressourcen

Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell

Ermitteln von Code über das Codemodell (Visual Basic)

Ermitteln von Code über das Codemodell (Visual C#)