Ich habe eine .cs-Datei namens 'test.cs', die im Wesentlichen so aussieht:
namespace test
{
public class TestClass
{
public void Hello()
{
var x = 1;
}
}
}
Ich versuche dies mit Roslyn zu analysieren und den Typ von x zu erhalten, der 'int' sein sollte, aber ich kann nur herausfinden, dass es vom Typ 'var' ist, ich scheine nicht den tatsächlichen zugrunde liegenden Typ zu bekommen.
Das ist im Grunde genommen der aktuelle Stand meines Codes
var location = "test.cs";
var sourceTree = CSharpSyntaxTree.ParseFile(location);
var root = (CompilationUnitSyntax)sourceTree.GetRoot();
foreach (var member in root.Members)
{
//...zu einer Methode gelangen
var method = (MethodDeclarationSyntax())member;
foreach (var child in method.Body.ChildNodes())
{
if (child is LocalDeclarationStatementSyntax)
{
//var x = 1;
child.Type.RealType()?
}
}
}
Wie kann ich den tatsächlichen Typ von child erhalten? Ich habe gelesen, dass ich einen SemanticModel oder eine Solution oder einen Workspace verwenden sollte, aber ich scheine nicht herauszufinden, wie ich meine Testlösung mit Roslyn laden und dann den Typ von 'x' erhalten kann.
Außerdem habe ich bisher keine wirklich gute Roslyn-Dokumentation gefunden, alles scheint auf verschiedene Versionen verteilt zu sein und nichts für Anfänger wie mich. Weiß jemand von einem 'Einstieg in Roslyn' oder einem ähnlichen Schnellstart, den ich lesen könnte?