Compartir a través de


CodeElement2.ElementID (Propiedad)

Obtiene un valor que identifica de manera única el elemento. No se ha implementado en Visual C#.

Espacio de nombres:  EnvDTE80
Ensamblado:  EnvDTE80 (en EnvDTE80.dll)

Sintaxis

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

Valor de propiedad

Tipo: System.String
Una cadena que representa el valor único correspondiente al elemento.

Comentarios

La propiedad ElementID es un valor que se calcula a partir del nombre de elemento y de otras informaciones que identifican al elemento de forma única. El cálculo exacto del identificador varía de un lenguaje a otro.

Este identificador se utiliza en clientes del modelo de código para efectuar el seguimiento de elementos sin retener referencias. Está incluido en eventos del modelo de código para comunicar al código de cliente cuál es el elemento que cambia. Los identificadores nuevos se proporcionan cuando se crean.

El valor de la propiedad ElementID no se debe considerar permanente. Es probable que cambie cada vez que se crea el modelo de código para un proyecto y también puede cambiar en la sesión actual. Cada vez que ElementID cambia, se produce un evento ElementChanged.

Nota

No se puede llamar a RenameSymbol ni a ElementID enlazados en tiempo de ejecución. (Por ejemplo, DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2").) Deberá convertir explícitamente el objeto a la interfaz CodeElement2 antes de realizar la llamada.

Los elementos de código de EnvDTE80 (de ahora en adelante denominados objetos Code*2) derivan de los elementos de EnvDTE. (Por ejemplo, CodeClass2 deriva de CodeClass y CodeElement2 deriva de CodeElement). Internamente en Visual Studio, todos los elementos de código (de ambos ensamblados) se convierten a su vez en CodeElement2. Así que, lógicamente, es como si, por ejemplo, CodeClass2 derivara finalmente de CodeElement2.

Puesto que los dos elementos en realidad se encuentran en dos jerarquías de herencia independientes, el enlazador en tiempo de ejecución no puede buscar métodos CodeElement2 en objetos Code*2. EnvDTE funciona esencialmente de la misma manera, pero el uso de macros de pre-procesador permite las interfaces ser definidas de modo que los métodos heredados se definen explícitamente en todas las interfaces relacionadas para las que las conversiones existen. Las interfaces EnvDTE80 se definen usando un esquema de herencia similar, pero sin el uso de instrucciones de pre-procesador. Ésta es una solución más elegante ya que elimina las propiedades redundantes, pero el resultado es que las propiedades no se pueden considerar enlazadas en tiempo de ejecución. Para solucionar este problema, deberá convertir explícitamente el objeto a la interfaz CodeElement2 antes de realizar la llamada.

Además, los valores de los elementos de modelo de código como clases, structs, funciones, atributos, delegados, etc., pueden ser no deterministas una vez realizados determinados tipos de modificaciones; esto significa que no se puede confiar en que sus valores se mantengan siempre igual. Para obtener más información, vea la sección Los valores de elementos de modelo de código pueden cambiar, en Detectar código utilizando el modelo de código (Visual Basic).

Seguridad de .NET Framework

Vea también

Referencia

CodeElement2 Interfaz

EnvDTE80 (Espacio de nombres)

Otros recursos

Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización

Detectar código utilizando el modelo de código (Visual Basic)

Detectar código utilizando el modelo de código (Visual C#)