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
string ElementID { get; }
property String^ ElementID {
    String^ get ();
}
abstract ElementID : string with get
function get ElementID () : String

Valore proprietà

Tipo: 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.funzionamento diEnvDTE essenzialmente la stessa modalità, ma l'utilizzo delle macro del preprocessore consente le interfacce da definire in modo che i metodi ereditati siano definiti in modo esplicito su tutte le conversioni relative interfacce per cui esistano.le interfacce diEnvDTE80 vengono definite utilizzando simile schema di ereditarietà, 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 non essere deterministici dopo alcuni tipi di modifiche. Ciò significa che 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#)