Compartir a través de


CodeElement2 (Interfaz)

Representa un elemento de código o una construcción en un archivo de código fuente.

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

Sintaxis

'Declaración
<GuidAttribute("F03DCCE8-233B-43D7-A66B-A66EFC1F85C3")> _
Public Interface CodeElement2 _
    Inherits CodeElement
[GuidAttribute("F03DCCE8-233B-43D7-A66B-A66EFC1F85C3")]
public interface CodeElement2 : CodeElement
[GuidAttribute(L"F03DCCE8-233B-43D7-A66B-A66EFC1F85C3")]
public interface class CodeElement2 : CodeElement
[<GuidAttribute("F03DCCE8-233B-43D7-A66B-A66EFC1F85C3")>]
type CodeElement2 =  
    interface 
        interface CodeElement 
    end
public interface CodeElement2 extends CodeElement

El tipo CodeElement2 expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública Children Obtiene una colección de objetos contenidos dentro de CodeElement2.
Propiedad pública Collection Obtiene la colección de CodeElements que contiene el elemento CodeElement2 compatible con esta propiedad.
Propiedad pública DTE Obtiene el objeto de extensibilidad de nivel superior.
Propiedad pública ElementID Obtiene un valor que identifica de manera única el elemento.No se ha implementado en Visual C#.
Propiedad pública EndPoint Obtiene el punto de texto que es la ubicación del final del elemento de código.
Propiedad pública Extender Devuelve el objeto Extender solicitado si está disponible para este objeto CodeElement2.No se ha implementado en Visual C#.
Propiedad pública ExtenderCATID Obtiene el identificador de categoría (CATID) del extensor para el objeto CodeElement2.No se ha implementado en Visual C#.
Propiedad pública ExtenderNames Obtiene una lista de extensores disponibles para el objeto CodeElement2.No se ha implementado en Visual C#.
Propiedad pública FullName Obtiene la ruta de acceso completa y el nombre de archivo del objeto CodeElement2.
Propiedad pública InfoLocation Obtiene las funciones del modelo de código.
Propiedad pública IsCodeType Indica si se puede obtener un objeto CodeType a partir del objeto CodeElement2.
Propiedad pública Kind Obtiene una enumeración que define el tipo de elemento de código.
Propiedad pública Language Obtiene el lenguaje de programación que se utiliza para crear el CodeElement2.
Propiedad pública Name Obtiene o establece el nombre del objeto CodeElement2.
Propiedad pública ProjectItem Obtiene el objeto ProjectItem asociado al objeto CodeElement.
Propiedad pública StartPoint Obtiene un objeto TextPoint que define el comienzo del CodeElement2.

Arriba

Métodos

  Nombre Descripción
Método público GetEndPoint Obtiene un objeto TextPoint que marca el final de la definición del elemento de código.
Método público GetStartPoint Obtiene un objeto TextPoint que marca el comienzo de la definición del elemento de código.
Método público RenameSymbol Cambia el nombre declarado de un objeto y actualiza todas las referencias de código al objeto dentro del ámbito del proyecto actual.

Arriba

Comentarios

Un elemento de código puede ser cualquier fragmento de código, pero por lo general existirá un objeto CodeElement2 para cada definición o sintaxis declarativa de un lenguaje. Esto significa que existe un objeto CodeElement2 para casi todas las definiciones o declaraciones de nivel superior presentes en un archivo, o para cualquier forma sintáctica de una definición de clase, y así sucesivamente.

Nota

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).

Ejemplos

[Visual Basic]

Sub IsCodeTypeExample(ByVal dte As DTE2)

    ' NOTE: This example requires a reference to the System.Text 
    '       namespace.

    ' Before running this example, open a code document from a project.
    Dim item As ProjectItem = dte.ActiveDocument.ProjectItem
    Dim sb As New StringBuilder

    RecurseElements(item.FileCodeModel.CodeElements, 0, sb)

    MsgBox(item.Name & " contains the following elements:" & vbCrLf & _
        vbCrLf & sb.ToString())

End Sub

Sub RecurseElements(ByVal elems As CodeElements, _
    ByVal level As Integer, ByVal sb As StringBuilder)

    Dim elem As CodeElement
    For Each elem In elems
        ' Add element to the list of names.
        sb.Append(" "c, level * 8)
        sb.Append(elem.Name & " [" & elem.Kind.ToString() & "]" & _
            vbCrLf)

        ' Call this function recursively if element has children.
        If elem.Kind = vsCMElement.vsCMElementNamespace Then
            RecurseElements(CType(elem, CodeNamespace).Members, _
                level + 1, sb)
        ElseIf elem.IsCodeType Then
            RecurseElements(CType(elem, CodeType).Members, _
                level + 1, sb)
        End If
    Next
End Sub

[C#]

public void IsCodeTypeExample(DTE2 dte)
{
    // NOTE: This example requires a reference to the System.Text 
    //       namespace.

    // Before running this example, open a code document from a 
    // project.
    ProjectItem item = dte.ActiveDocument.ProjectItem;
    StringBuilder sb = new StringBuilder();

    RecurseElements(item.FileCodeModel.CodeElements, 0, sb);

    MessageBox.Show(item.Name + " contains the following elements:" + 
        Environment.NewLine + Environment.NewLine + sb.ToString());
}

void RecurseElements(CodeElements elems, int level, StringBuilder sb)
{
    foreach (CodeElement elem in elems)
    {
        // Add element to the list of names.
        sb.Append(' ', level * 8);
        sb.Append(elem.Name + " [" + elem.Kind.ToString() + "]" + 
            Environment.NewLine);

        // Call this function recursively if element has children.
        if (elem.Kind == vsCMElement.vsCMElementNamespace)
            RecurseElements(((CodeNamespace)elem).Members, 
                level + 1, sb);
        else if (elem.IsCodeType)
            RecurseElements(((CodeType)elem).Members, level + 1, sb);
    }
}

Vea también

Referencia

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#)