标识库中的符号

符号浏览工具显示符号的分层视图。 符号表示命名空间、对象、类、类成员和其他语言元素。

层次结构中的每个符号都可以通过以下接口通过符号库传递给 Visual Studio 对象管理器的导航信息来标识:

层次结构中符号的位置可区分符号。 它允许符号浏览工具导航到特定符号。 符号的唯一完全限定路径决定了位置。 路径中的每个元素都是一个节点。 路径以顶级节点开头,以特定符号结尾。 例如,如果 M1 方法是 C1 类的成员,并且 C1 位于 N1 命名空间中,则 M1 方法的完整路径为 N1。C1.M1. 此路径包含三个节点:N1、C1 和 M1。

导航信息允许 Visual Studio 对象管理器查找、选择和保留层次结构中的符号。 它允许从一个浏览工具导航到另一个浏览工具。 使用 对象浏览器 浏览 Visual C++ 项目中的符号时,可以右键单击某个方法并启动 调用浏览器 工具,以在调用图中显示该方法。

两种形式描述了符号位置。 规范形式基于符号的完全限定路径。 它表示层次结构中符号的唯一位置。 它独立于符号浏览工具。 若要获取规范表单信息,Visual Studio 对象管理器将调用 EnumCanonicalNodes 方法。 演示文稿窗体描述特定符号浏览工具中符号的位置。 符号的位置相对于层次结构中其他符号的位置。 给定符号可能有多个表示路径,但只有一个规范路径。 例如,如果 C1 类继承自 C2 类,并且两个类都位于 N1 命名空间中,则 对象浏览器 将显示以下分层树:

N1
    C1
        Bases and Interfaces
            C2
    C2
        Bases and Interfaces
. . . . . . . . . . .

在本示例中,C2 类的规范路径为 N1 + C2。 C2 的呈现路径包括 C1 和“基和接口”节点:N1 + C1 + “基和接口” + C2。

若要获取演示文稿表单信息,对象管理器将调用 EnumPresentationNodes 方法。

获取规范表单和演示文稿表单信息

  1. 实现 EnumCanonicalNodes 方法。

    对象管理器调用此方法以获取符号规范路径中包含的节点列表。

    public int EnumCanonicalNodes(out Microsoft.VisualStudio.Shell.Interop.IVsEnumNavInfoNodes ppEnum)
    {
        CallBrowserEnumNavInfoNodes EnumNavInfoNodes =
            new CallBrowserEnumNavInfoNodes(m_strMethod);
        ppEnum = (IVsEnumNavInfoNodes)(EnumNavInfoNodes);
        return 0;
    }
    
    
  2. 实现 EnumPresentationNodes 方法。

    对象管理器调用此方法以获取符号的表示路径中包含的节点列表。