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 (Se hereda de CodeElement).
Propiedad pública Children Obtiene una colección de objetos contenidos dentro de CodeElement2.
Propiedad pública Collection (Se hereda de CodeElement).
Propiedad pública Collection Obtiene la colección de CodeElements que contiene el elemento CodeElement2 compatible con esta propiedad.
Propiedad pública DTE (Se hereda de CodeElement).
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 (Se hereda de CodeElement).
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[String] (Se hereda de CodeElement).
Propiedad pública Extender[String] Devuelve el objeto Extender solicitado si está disponible para este objeto CodeElement2.No se ha implementado en Visual C#.
Propiedad pública ExtenderCATID (Se hereda de CodeElement).
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 (Se hereda de CodeElement).
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 (Se hereda de CodeElement).
Propiedad pública FullName Obtiene la ruta de acceso completa y el nombre de archivo del objeto CodeElement2.
Propiedad pública InfoLocation (Se hereda de CodeElement).
Propiedad pública InfoLocation Obtiene las funciones del modelo de código.
Propiedad pública IsCodeType (Se hereda de CodeElement).
Propiedad pública IsCodeType Indica si se puede obtener un objeto CodeType a partir del objeto CodeElement2.
Propiedad pública Kind (Se hereda de CodeElement).
Propiedad pública Kind Obtiene una enumeración que define el tipo de elemento de código.
Propiedad pública Language (Se hereda de CodeElement).
Propiedad pública Language Obtiene el lenguaje de programación que se utiliza para crear el CodeElement2.
Propiedad pública Name (Se hereda de CodeElement).
Propiedad pública Name Obtiene o establece el nombre del objeto CodeElement2.
Propiedad pública ProjectItem (Se hereda de CodeElement).
Propiedad pública ProjectItem Obtiene el objeto ProjectItem asociado al objeto CodeElement.
Propiedad pública StartPoint (Se hereda de 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(vsCMPart) (Se hereda de CodeElement).
Método público GetEndPoint(vsCMPart) Obtiene un objeto TextPoint que marca el final de la definición del elemento de código.
Método público GetStartPoint(vsCMPart) (Se hereda de CodeElement).
Método público GetStartPoint(vsCMPart) 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 los elementos del 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#)