Share via


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 この CodeElement2 に含まれているオブジェクトのコレクションを取得します。
パブリック プロパティ Collection このプロパティをサポートしている CodeElement2 オブジェクトを含んでいる CodeElements コレクションを取得します。
パブリック プロパティ DTE トップレベルの機能拡張オブジェクトを取得します。
パブリック プロパティ ElementID 要素を一意に識別する値を取得します。Visual C# には実装されていません。
パブリック プロパティ EndPoint コード項目の終了位置であるテキスト ポイントを取得します。
パブリック プロパティ Extender 要求された Extender がこの CodeElement2 オブジェクトで利用できる場合はそれを返します。Visual C# には実装されていません。
パブリック プロパティ ExtenderCATID CodeElement2 オブジェクトの Extender カテゴリ ID (CATID) を取得します。Visual C# には実装されていません。
パブリック プロパティ ExtenderNames CodeElement2 オブジェクトで使用できる Extender のリストを取得します。Visual C# には実装されていません。
パブリック プロパティ FullName CodeElement2 オブジェクトのファイルの完全パスと名前を取得します。
パブリック プロパティ InfoLocation コード モデルの機能を取得します。
パブリック プロパティ IsCodeType CodeElement2 オブジェクトから CodeType オブジェクトを取得できるかどうかを取得します。
パブリック プロパティ Kind コード要素の型を定義する列挙値を取得します。
パブリック プロパティ Language CodeElement2 の作成に使用されたプログラミング言語を取得します。
パブリック プロパティ Name CodeElement2 オブジェクトの名前を取得または設定します。
パブリック プロパティ ProjectItem CodeElement オブジェクトに関連付けられている ProjectItem オブジェクトを取得します。
パブリック プロパティ StartPoint CodeElement2 の開始を定義する TextPoint オブジェクトを取得します。

このページのトップへ

メソッド

  名前 説明
パブリック メソッド GetEndPoint コード要素定義の末尾を示す TextPoint オブジェクトを取得します。
パブリック メソッド GetStartPoint コード要素定義の先頭を示す 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#)