Condividi tramite


Identificare i simboli in una libreria

Gli strumenti di esplorazione dei simboli visualizzano visualizzazioni gerarchiche dei simboli. I simboli rappresentano spazi dei nomi, oggetti, classi, membri di classe e altri elementi del linguaggio.

Ogni simbolo nella gerarchia può essere identificato dalle informazioni di navigazione passate dalla libreria dei simboli al gestore oggetti di Visual Studio tramite le interfacce seguenti:

La posizione del simbolo nella gerarchia distingue un simbolo. Consente agli strumenti di esplorazione dei simboli di passare a un simbolo specifico. Il percorso univoco e completo del simbolo determina la posizione. Ogni elemento nel percorso è un nodo. Il percorso inizia con il nodo di primo livello e termina con il simbolo specifico. Ad esempio, se il metodo M1 è un membro della classe C1 e C1 si trova nello spazio dei nomi N1, il percorso completo del metodo M1 è N1. C1. M1. Questo percorso contiene tre nodi: N1, C1 e M1.

Le informazioni di spostamento consentono al gestore oggetti di Visual Studio di individuare, selezionare e mantenere selezionati i simboli nella gerarchia. Consente di spostarsi da uno strumento di esplorazione a un altro. Quando si usa Visualizzatore oggetti per esplorare i simboli in un progetto Visual C++, è possibile fare clic con il pulsante destro del mouse su un metodo e avviare lo strumento Browser chiamate per visualizzare il metodo in un grafico di chiamata.

Due forme descrivono la posizione del simbolo. La forma canonica si basa sul percorso completo del simbolo. Rappresenta una posizione univoca del simbolo nella gerarchia. È indipendente dallo strumento di esplorazione dei simboli. Per ottenere le informazioni sul modulo canonico, gestione oggetti di Visual Studio chiama EnumCanonicalNodes il metodo . Il modulo di presentazione descrive la posizione del simbolo all'interno di uno strumento specifico di esplorazione dei simboli. La posizione del simbolo è relativa alla posizione di altri simboli nella gerarchia. Un determinato simbolo può avere diversi percorsi di presentazione, ma un solo percorso canonico. Ad esempio, se la classe C1 viene ereditata dalla classe C2 e entrambe le classi si trovano nello spazio dei nomi N1, il Visualizzatore oggetti visualizza l'albero gerarchico seguente:

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

Il percorso canonico della classe C2, in questo esempio, è N1 + C2. Il percorso di presentazione di C2 include nodi C1 e "Basi e interfacce": N1 + C1 + "Basi e interfacce" + C2.

Per ottenere le informazioni sul modulo di presentazione, il gestore oggetti chiama EnumPresentationNodes il metodo .

Per ottenere informazioni sui moduli canonici e di presentazione

  1. Implementa il metodo EnumCanonicalNodes.

    Gestione oggetti chiama questo metodo per ottenere l'elenco di nodi contenuti nel percorso canonico del simbolo.

    public int EnumCanonicalNodes(out Microsoft.VisualStudio.Shell.Interop.IVsEnumNavInfoNodes ppEnum)
    {
        CallBrowserEnumNavInfoNodes EnumNavInfoNodes =
            new CallBrowserEnumNavInfoNodes(m_strMethod);
        ppEnum = (IVsEnumNavInfoNodes)(EnumNavInfoNodes);
        return 0;
    }
    
    
  2. Implementa il metodo EnumPresentationNodes.

    Gestione oggetti chiama questo metodo per ottenere l'elenco di nodi contenuti nel percorso di presentazione del simbolo.