如何创建RegionDirectiveTriviaSyntax?
下面是我已经接近并且失败了。第三个参数定义为" name"但是没有那种类型。我尝试过文字,标识符和其他几种令牌,但他们都抱怨善良。是否有正确的方法来解析一个,所以我不必做"替换"?
trivia
是现有的C#SyntaxTrivia,我正在创建一个VB RegionDirectiveTriviaSyntax:
Dim node As RegionDirectiveTriviaSyntax =
SyntaxFactory.RegionDirectiveTrivia
(SyntaxFactory.Token(SyntaxKind.HashToken),
SyntaxFactory.Token(SyntaxKind.RegionKeyword),
SyntaxFactory.Token
(SyntaxKind.IdentifierToken,
trivia.ToString.Replace("#region ", "")
)
)
答案 0 :(得分:3)
如果你不知道SyntaxTree
是如何针对某些特定的SyntaxNode
构建的,例如Region
。您可以这样做:
请确保您已安装.NET Compiler Platform SDK。这会将Syntax Visualizer添加到Visual Studio中。它允许您检查源代码的SyntaxTree。
转到View->其他Windows->语法Visualizer或在快速启动栏中搜索它以显示以下面板:
只需将光标放在您要检查的代码上即可。语法Visualizer将跳转到树中的特定节点。如果单击“区域”名称,则可以看到该节点是使用3个特定标记创建的:HashToken
,RegionKeyWord
和StringLiteralToken
。以下代码将创建相同的RegionDirectiveTrivia
:
Dim regionDirectiveTriviaSyntax =
SyntaxFactory.RegionDirectiveTrivia(
SyntaxFactory.Token( SyntaxKind.HashToken),
SyntaxFactory.Token( SyntaxKind.RegionKeyword ) ,
SyntaxFactory.StringLiteralToken( "SomeRegionName" , "SomeRegionName") )