我有一個包含一些類文件的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