Angenommen, ich habe eine Quelldatei, die wie folgt aussieht:
%Vor%Ich verwende einen SyntaxRewriter, um alle Bezeichner in dieser Datei zu besuchen. In der VisitIdentifierName-Methode möchte ich den Bezeichner im semantischen Modell nachschlagen, um festzustellen, ob sich ein Bezeichner auf ein Mitglied der aktuellen Klasse bezieht.
Das habe ich bisher:
%Vor%Allerdings kann ich den Bezeichner im semantischen Modell nicht finden - es gibt keine Überladung der SemanticModel.GetDeclaredSymbol-Methode, die eine IdentifierNameSyntax akzeptiert.
Irgendeine Idee, wie ich das tun sollte?
Sie sollten SemanticModel.GetSymbolInfo
für den Ausdruck verwenden (in diesem Fall IdentifierNameSyntax
).
GetDeclaredSymbol
dient dazu, vom Deklarationspunkt ( int field;
oben) zu einem Symbol zu gehen. Um die Bindungslogik des Compilers auszuführen und zu sehen, an welches Symbol ein bestimmter Ausdruck gebunden ist, verwenden Sie GetSymbolInfo
.