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