如何删除 roslyn 语法树中的标记。例如从 属性 中删除虚拟关键字标记?

How do I remove token in syntax tree in roslyn. e.g. remove virtual keyword token from property?

如何删除 roslyn 语法树中的标记。例如从 属性 中删除虚拟关键字标记? Roslyn 有 RemoveNode 方法,但我找不到 RemoveToken 方法或删除令牌的方法。

找到答案了。要删除,请将令牌替换为种类 none 的新令牌。笨拙但有效。

var noneToken = SyntaxFactory.Token(SyntaxKind.None);
node = node.ReplaceToken(token_to_remove, noneToken);

当 运行 上述代码时,我得到一个 ArgumentException。这似乎可行(尽管可能有点乱):

var node = node.ReplaceToken(dotToken_to_remove, SyntaxFactory.MissingToken(SyntaxKind.DotToken));