假设我有一个如下所示的源文件:
public class FieldReference
{
int field;
public FieldReference()
{
field = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用SyntaxRewriter访问此文件中的所有标识符.在VisitIdentifierName方法中,我想在语义模型中查找标识符,以便发现标识符是否指向当前类的成员.
这是我到目前为止:
public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node)
{
SemanticModel model = this.compilation.GetSemanticModel(this.src);
// ?? look up identifier in compilation here ??
return base.VisitIdentifierName(node);
}
Run Code Online (Sandbox Code Playgroud)
但是我无法找到在语义模型中查找标识符 - SemanticModel.GetDeclaredSymbol方法没有重载接受IdentifierNameSyntax.
知道我应该怎么做吗?
你应该SemanticModel.GetSymbolInfo在表达式上使用(在这种特殊情况下IdentifierNameSyntax).
GetDeclaredSymbol用于从声明点(int field;上图)到符号.要执行编译器的绑定逻辑并查看特定表达式绑定的符号,请使用GetSymbolInfo.
| 归档时间: |
|
| 查看次数: |
1351 次 |
| 最近记录: |