Ich schreibe eine Erweiterung zu Visual Studio intellisense und möchte den Typ des Elements direkt vor dem Cursor in einem C # -Editor abrufen.
Ich habe derzeit eine ITextBuffer
, die ich verwenden kann, um die aktuelle Quelldatei zu erhalten.
Ich kann auch die aktuelle Position im Editor wie folgt erhalten:
%Vor%Ich bin mir jedoch nicht sicher, wie ich den Typ des aktuell im Editor hinter dem Cursor stehenden Elements erkennen kann. Ich habe versucht, Roslyn zu benutzen, aber es scheint, als wäre das eine viel einfachere Sache als das zu tun. Ist Roslyn das beste Werkzeug, um dies zu tun (durch Kompilieren des Dokuments und Navigieren zur richtigen Position im Dokument) oder gibt es einen besseren Weg.
Unten ist mein Versuch, den Typ des Gegenstandes mit Roslyn zu finden:
%Vor%Die Compiler-APIs sind sehr bewusst und erfordern, dass Sie die richtige Frage stellen (keine Fuzzy-Logik). Um den Typ der Sache an der Cursorposition zu finden, benötigen Sie einen Kontext und die Antwort, die Ihnen zunächst offensichtlich erscheinen mag nicht die richtige Antwort für andere Anwendungen.
Für allgemeine Ausdrücke können Sie so etwas tun: (Beachten Sie, dass es nicht sehr robust ist)
%Vor%Eine umfassendere Lösung würde den Elternknoten des Tokens überprüfen und von dort aus gehen:
%Vor%...
Es gibt viele interessante Fälle, und was Sie als Typ anzeigen möchten, der einem bestimmten Bezeichner oder Token in der Quelldatei entspricht, kann je nach dem, was Sie erreichen möchten, variieren.
Tags und Links c# visual-studio roslyn vs-extensibility