我有一个包含一些类文件的C#解决方案。使用Roslyn,我能够解析解决方案以获取解决方案内项目的列表。从那里,我可以获取每个项目中的文档。然后,我可以获取每个ClassDeclarationSyntax的列表。这是起点。
问题在于我不确定如何从当前代码中获取命名空间的值。有什么想法吗?
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);
}
}
}
我希望能够从这些对象中获取每个类中使用的变量的名称空间。例如,文件1中有一个名为“getBar()”的方法,返回类型为B.Bar的对象。名称空间非常重要,因为它可以告诉你真正返回的是哪种类型的Bar。
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(){
}
}
问题在于我不确定如何从当前代码中获取命名空间的值。有什么想法吗?
await
等待这些调用。 - SLaks