Condividi tramite


Proprietà CodeElement2.ElementID

Ottiene un valore che identifica in modo univoco l'elemento. Non implementato in Visual C#.

Spazio dei nomi:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.dll)

Sintassi

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

Valore proprietà

Tipo: System.String
Stringa che rappresenta il valore univoco per l'elemento.

Note

La proprietà ElementID corrisponde a un valore che viene calcolato in base al nome dell'elemento e ad altre informazioni che identificano in modo univoco l'elemento. Il calcolo esatto dell'ID varia a seconda dei linguaggi.

L'ID è utilizzato dai client del modello di codice per tenere traccia degli elementi senza conservare i riferimenti. È incluso negli eventi Modello di codice per informare il codice client che l'elemento sta cambiando. Nuovi ID vengono forniti dopo essere stati creati.

Il valore della proprietà ElementID non deve essere considerato permanente. È probabile che cambi ogni volta che viene creato il modello di codice per un progetto ed è anche possibile che cambi nella sessione corrente. Si verifica un evento ElementChanged ogni volta che cambia ElementID.

Nota

Non è possibile chiamare RenameSymbol o l'associazione tardiva ElementID, ad esempio DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2"). È necessario eseguire in modo esplicito il cast dell'oggetto sull'interfaccia CodeElement2 prima di effettuare la chiamata.

Gli elementi di codice in EnvDTE80 (in seguito denominati oggetti Code*2) derivano da quelli presenti in EnvDTE, ad esempio CodeClass2 deriva da CodeClass e CodeElement2 deriva da CodeElement. All'interno di Visual Studio, viene eseguito il cast di tutti gli elementi di codice (in entrambi gli assembly) su CodeElement2. Quindi, è come se ad esempio CodeClass2 derivasse in definitiva da CodeElement2.

Poiché i due elementi si trovano in realtà in due gerarchie di ereditarietà separate, tuttavia, il gestore di associazione non può ricercare i metodi CodeElement2 sugli oggetti Code*2. EnvDTE funziona essenzialmente nello stesso modo, ma l'utilizzo di macro del preprocessore consente alle interfacce di essere definite in modo che i metodi ereditati vengano definiti in modo esplicito su tutte le interfacce correlate per cui esistono le conversioni. Le interfacce EnvDTE80 vengono definite mediante uno schema di ereditarietà simile, solo senza l'utilizzo di istruzioni del preprocessore. Si tratta di una soluzione più elegante perché le proprietà ridondanti vengono eliminate, ma in questo modo non possono essere chiamate con associazione tardiva. Per ovviare a questo problema, è necessario eseguire in modo esplicito il cast dell'oggetto sull'interfaccia CodeElement2 prima di effettuare la chiamata.

Inoltre, i valori degli elementi del modello di codice, quali classi, strutture, funzioni, attributi, delegati e così via, possono essere non deterministici dopo alcuni tipi di modifiche. Di conseguenza, non si può fare affidamento sulla stabilità di tali valori. Per ulteriori informazioni, vedere la sezione Possibile modifica dei valori degli elementi del modello di codice in Individuazione di codice mediante il modello di codice (Visual Basic).

Sicurezza di .NET Framework

Vedere anche

Riferimenti

CodeElement2 Interfaccia

Spazio dei nomi EnvDTE80

Altre risorse

Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione

Individuazione di codice mediante il modello di codice (Visual Basic)

Individuazione di codice mediante il modello di codice (Visual C#)