Ho una soluzione C# che contiene alcuni file di classe. Con Roslyn sono in grado di analizzare una soluzione per ottenere un elenco di progetti all'interno della soluzione. Da lì, posso ottenere i documenti in ogni progetto. Quindi, posso ottenere un elenco di ogni ClassDeclarationSyntax. Questo è il punto di partenza.Roslyn: come ottenere lo spazio dei nomi di una dichiarazioneSintassi con Roslyn C#
foreach (var v in _solution.Projects)
{
//Console.WriteLine(v.Name.ToString());
foreach (var document in v.Documents)
{
SemanticModel model = document.GetSemanticModelAsync().Result;
var classes = document.GetSyntaxRootAsync().Result.DescendantNodes().OfType<ClassDeclarationSyntax>();
foreach(var cl in classes)
{
// Starting around this point...
ClassDiagramClass cls = new ClassDiagramClass(cl, model);
diagramClasses.Add(cls);
}
}
}
Da questi oggetti che voglio essere in grado di ottenere lo spazio dei nomi delle variabili utilizzate all'interno di ogni classe. Vedi il file 1 ha un metodo "getBar()" che restituisce un oggetto di tipo B.Bar. Lo spazio dei nomi è importante perché ti dice quale tipo di Barra viene effettivamente restituito.
File1.cs
using B;
namespace A {
public class foo(){
public Bar getBar(){ return new Bar();}
}
}
File2.cs
namespace B {
public class Bar(){
}
}
File3.cs
namespace C {
public class Bar(){
}
}
Il problema è che io non sono sicuro h ow per ottenere il valore Namespace da dove sono nel codice in questo momento. Qualche idea?
si dovrebbe essere 'await'ing quelle chiamate. – SLaks
Attenzione ai tipi annidati. – SLaks