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