scusa shodan ma mi ero dimenticato di questo post , adesso le classi non riesco a postartele perchè sono al lavoro, ma devo generare un grafo di nodi CNodeImporter(classe di un composite) da una gerarchia di istanze di classi IskProvider(una classe composite anch' essa).

Mi sono trovato molto in difficoltà su questo punto:
1)non riesco a capire come fare il debug dell' algoritmo che fa l'attraversamento delle istanze IskProvider(che chiaramente possono avere uno o piu figli IskProvider sempre di tipo IskProvider o non hanno nessun figlio )


io ho strutturato in questo modo a memoria:
codice:
void Traverse(CNodeimporter ParentNode, IskProvider)
{
   //con figli
   for(IskProvider prov in Iskprovider.children)//pseudo code 
   {
        CNodeImporter ChildNode = new CNodeImporter(prov)//carica alcune caratteristiche da //prov
        ParentNode.insert(ChildNode);
        parentNode = ChildNode;
        Traverse(parentNode,prov);//
   }

   if(IskProvider!= NULL && IskProvider.children.Lenght == 0)//l'istanza IskProvider non ha figli
    {
        CNodeImporter ChildNode = new CNodeImporter(prov)//carica caratteristiche
        ParentNode.insert(ChildNode);
        parentNode = ChildNode;
    }
 }
}
ma sono ancora lontano dalla soluzione.
soprattutto non capisco come debuggare il tutto, e come le variabili di una chiamata cambino , penso , dico penso che tutte le variabili di una chiamata vengano "salvate" nello stack , ma come ritornano (automaticamente) e in che ordine?
è soprattutto l'ordine che non riesco a capire , come si srotola il tutto quando ho finito le chiamate ricorsive?

scusa l'ignoranza ma è una delle prime volte che affronto l'argomento e vorrei capire.

grazie.
ciao