c# - 清理 roslyn 成员声明语法标识符

标签 c# roslyn

在构建 synxtaxtrees 时,roslyn 中是否有任何现有的方法或机制来清理 memberdeclarationsynxtax 节点的标识符名称?

例如带有空格、点、破折号或使用保留字如 class、void、string 的名称

[编辑] 需要澄清的是,将生成代码,因此您事先不知道或无法控制输入,目的是净化输入。我指的是等同于 Path.GetInvalidFileNameChars() 的语法树,您可以使用它来清理输入以创建目录和文件。我在问 roslyn 是否有任何此类机制。

最佳答案

在跟进已接受的答案时,我在 SyntaxFacts 上发现了一些可以在这里使用的其他方法。

GetKeywordKind(string) 返回表示关键字的 SyntaxKind,如果传递的字符串不是 C# 关键字,则返回 SyntaxKind.NoneGetContextualKeywordKind(string) 对上下文关键字做同样的事情。这应该可以轻松地执行以下操作:

string identifier = "double";
bool isAnyKeyword = SyntaxFacts.GetKeywordKind(identifier) != SyntaxKind.None
                 || SyntaxFacts.GetContextualKeywordKind(identifier) != SyntaxKind.None;

关于c# - 清理 roslyn 成员声明语法标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645750/

相关文章:

c# - 将空格附加到 stringbuilder 左对齐

c# - 页面重定向到上一页?

c# - 无法使用 LOCK C# 锁定值类型

c# - 如何将 XML 文档注释添加到 Roslyn 中的 ClassDeclarationSyntax?

C# await in async 方法清除 SynchronizationContext(带重现测试)

c# - 获取 ultragridcolumn 的实际宽度

c# - 如何修复 C# Source Generators 未找到引用的问题

c# - 在运行时编译的部分枚举 - 替代

c# - 在 Roslyn 中获取表达式结果的类型

c# - SonarQube 未更新报告 - "Line 5 is out of range for file Program.cs. File has 4 lines"