我正在尝试对nameof
a 中的表达式做一些事情CSharpSyntaxWalker
,但是,我注意到NameOfExpressionSyntax
AST 中没有。相反,我得到一个InvocationExpressionSyntax
for whichSemanticModel.GetSymbolInfo
返回不匹配的符号,并且调用的表达式是一个IdentifierNameSyntax
包含标识符 token "nameof"
。
因此,为了识别nameof
表达式,我会在 中添加一个特殊情况VisitInvocationExpression
,查找是否GetSymbolInfo
返回任何内容,如果没有,则查找标识符是否为nameof
. 但是,这对我来说听起来有点不确定。有没有更好的方法可以将这种检测逻辑转移到解析器?
(PS:我知道这可能是出于向后兼容性的原因解析的;只是想知道是否有用于区分nameof
和正常调用的 API。)