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 对象,则返回该 Extender。未在 Visual C# 中实现。 | |
ExtenderCATID | (继承自 CodeElement。) | |
ExtenderCATID | 获取 CodeElement2 对象的扩展程序类别 ID (CATID)。未在 Visual C# 中实现。 | |
ExtenderNames | (继承自 CodeElement。) | |
ExtenderNames | 获取 CodeElement2 对象的可用扩展程序的列表。未在 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 | 获取一个 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);
}
}