Bazı sınıf dosyalarını içeren bir C# çözümüm var. Roslyn ile çözüm içinde bir proje listesi elde etmek için bir çözüm ayrıştırmak mümkün. Oradan, her projede belgeleri alabilirim. Sonra, her ClassDeclarationSyntax'ın bir listesini alabilirim. Bu başlangıç noktasıdır. Ben her sınıf içinde kullanılan değişkenlerin Namespace elde edebilmek istiyorum bu nesneler itibarenRoslyn: Roslyn C ile bir DeclarationSyntax'ın Adını Nasıl Alabilirim?
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);
}
}
}
. Bkz. Dosya 1, B.Bar türünde bir nesne döndüren bir "getBar()" yöntemine sahiptir. Ad alanı önemlidir, çünkü size hangi Bar türünün gerçekten döndüğünü bildirir.
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(){
}
}
sorunu Emin h değilim ki
Namespace değerine şu an kodda olduğum yerden ulaşmak için. Herhangi bir fikir?
Sen bu aramaları await'ing 'olmalıdır. – SLaks
Yuvalı türlere dikkat edin. – SLaks