Поделиться через


CodeElement2 - интерфейс

Предоставляет элемент или конструкцию кода в исходном файле.

Пространство имен:  EnvDTE80
Сборка:  EnvDTE80 (в EnvDTE80.dll)

Синтаксис

'Декларация
<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

Тип CodeElement2 предоставляет следующие члены.

Свойства

  Имя Описание
Открытое свойство Children (Унаследовано от CodeElement.)
Открытое свойство Children Получает коллекцию объектов, содержащихся в данном объекте CodeElement2.
Открытое свойство Collection (Унаследовано от CodeElement.)
Открытое свойство Collection Возвращает коллекцию CodeElements, содержащую объект CodeElement2, поддерживающий это свойство.
Открытое свойство DTE (Унаследовано от CodeElement.)
Открытое свойство DTE Возвращает объект расширения верхнего уровня.
Открытое свойство ElementID Получает значение, однозначно определяющее элемент.Не реализовано в Visual С#.
Открытое свойство EndPoint (Унаследовано от CodeElement.)
Открытое свойство EndPoint Возвращает точку в тексте, соответствующую местоположению конца элемента кода.
Открытое свойство Extender[String] (Унаследовано от CodeElement.)
Открытое свойство Extender[String] Возвращает запрашиваемый расширитель, если он доступен для данного объекта CodeElement2.Не реализовано в Visual С#.
Открытое свойство ExtenderCATID (Унаследовано от CodeElement.)
Открытое свойство ExtenderCATID Получает идентификатор категории расширителя (CATID) для объекта CodeElement2.Не реализовано в Visual С#.
Открытое свойство ExtenderNames (Унаследовано от CodeElement.)
Открытое свойство ExtenderNames Получает список доступных расширителей для объекта CodeElement2.Не реализовано в Visual С#.
Открытое свойство FullName (Унаследовано от CodeElement.)
Открытое свойство FullName Получает полный путь и имя файла объекта CodeElement2.
Открытое свойство InfoLocation (Унаследовано от CodeElement.)
Открытое свойство InfoLocation Возвращает сведения о возможностях модели кода.
Открытое свойство IsCodeType (Унаследовано от CodeElement.)
Открытое свойство IsCodeType Получает значение, указывающее, можно ли получить объект CodeType из объекта CodeElement2.
Открытое свойство Kind (Унаследовано от CodeElement.)
Открытое свойство Kind Получает значение перечисления, определяющее тип элемента кода.
Открытое свойство Language (Унаследовано от CodeElement.)
Открытое свойство Language Получает язык программирования, используемый при создании объекта CodeElement2.
Открытое свойство Name (Унаследовано от CodeElement.)
Открытое свойство Name Получает или задает имя объекта CodeElement2.
Открытое свойство ProjectItem (Унаследовано от CodeElement.)
Открытое свойство ProjectItem Получает объект ProjectItem, связанный с объектом CodeElement.
Открытое свойство StartPoint (Унаследовано от CodeElement.)
Открытое свойство StartPoint Получает объект TextPoint, определяющий начало элемента CodeElement2.

В начало страницы

Методы

  Имя Описание
Открытый метод GetEndPoint(vsCMPart) (Унаследовано от CodeElement.)
Открытый метод GetEndPoint(vsCMPart) Возвращает объект TextPoint, отмечающий конец определения элемента кода.
Открытый метод GetStartPoint(vsCMPart) (Унаследовано от CodeElement.)
Открытый метод GetStartPoint(vsCMPart) Получает объект TextPoint, отмечающий начало определения элемента кода.
Открытый метод RenameSymbol Изменяет объявленное имя объекта и обновляет все ссылки на объект в коде в рамках текущего проекта.

В начало страницы

Заметки

Элемент кода — это любой фрагмент кода, но обычно в языке существует объект CodeElement2 для каждого определения или декларативного синтаксиса. Это значит, что для большинства определений или объявлений верхнего уровня в файле или для синтаксический формы в определении класса и т. п. существует соответствующий объект CodeElement2.

Примечание

Значения элементов модели кода, таких как классы, структуры, функции, атрибуты, делегаты и т. п., после внесения некоторых изменений могут оказаться неопределенными, иными словами, нельзя рассчитывать, что их значения будут всегда оставаться одинаковыми.Дополнительные сведения см. в разделе "Значения элементов модели кода могут изменяться" в разделе Практическое руководство. Поиск кода при помощи модели кода (Visual Basic).

Примеры

[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);
    }
}

См. также

Ссылки

EnvDTE80 - пространство имен

Другие ресурсы

Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации

Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)

Практическое руководство. Поиск кода при помощи модели кода (Visual C#)