【发布时间】:2020-02-08 02:07:06
【问题描述】:
我正在尝试使用 Roslyn 从 SyntaxTree 中删除类型为 SyntaxTrivia 的所有节点。
我尝试使用SyntaxRewriter 类,但这不起作用,因为SyntaxTrivia 不可为空:
public class WhitespaceRemover : CSharpSyntaxRewriter
{
public override SyntaxTrivia VisitTrivia(SyntaxTrivia trivia)
{
// Cannot convert null to 'SyntaxTrivia' because it is a non-nullable value type
return null;
}
}
实现此目的的正确方法是什么?
【问题讨论】:
-
你试过
return default(SyntaxTrivia);吗? -
我确定你想重写
SyntaxNode调用Microsoft.CodeAnalysis.SyntaxNodeExtensions.WithoutTrivia(...)就可以了,而不是SyntaxtTrivia -
@GeorgeAlexandria 好吧。那讲得通。请给它一个答案,然后我可以接受。
-
为了在此给予更多肯定,@Christian.K 的建议适用于删除未附加到语法节点的琐事标记。
标签: c# syntax formatting roslyn