Supponendo Ho un file di origine che assomiglia a questo:Trova Identifier nel Semantic Modello
public class FieldReference
{
int field;
public FieldReference()
{
field = 1;
}
}
Sto usando uno SyntaxRewriter per visitare tutti gli identificatori in questo file. Nel metodo VisitIdentifierName, voglio cercare l'identificatore nel modello semantico, per scoprire se un identificatore si riferisce a un membro della classe corrente.
Questo è quello che ho finora:
public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node)
{
SemanticModel model = this.compilation.GetSemanticModel(this.src);
// ?? look up identifier in compilation here ??
return base.VisitIdentifierName(node);
}
Tuttavia non posso trovare via per cercare l'identificatore nel modello Symantic - non c'è overload del metodo SemanticModel.GetDeclaredSymbol che accetta un IdentifierNameSyntax .
Qualche idea su come dovrei farlo?
Grazie Kevin, non sono sicuro di come ho trascurato quello. Tutto solo molto nuovo per me, credo! – Grokys
hmm, questo sembra rotto nella versione di anteprima corrente di Roslyn. Vedi il progetto samples => ConvertToAutoPropertyCS => Inside the PropertyRewriter => VisitFieldDeclaration (FieldDeclarationSyntax campo) Non c'è modo di ottenere il simbolo per il parametro field. – mynkow
Poiché una dichiarazione di campo può dichiarare più di un simbolo, è necessario utilizzare effettivamente VariableDeclaratorSyntax. –