我有一个包含一些类文件的c#解决方案。借助Roslyn,我能够解析解决方案以获得解决方案中的项目列表。从那里,我可以在每个项目中获得文件。然后,我可以得到每个ClassDeclarationSyntax的列表。 这是出发点。Roslyn:如何使用Roslyn C获得DeclarationSyntax的命名空间#
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(){
}
}
的问题是,我不知道^ h从我现在在代码中的位置获取名称空间值。有任何想法吗?
你应该是'await'ing这些电话。 – SLaks
请注意嵌套类型。 – SLaks