罗斯林地区的琐事

时间:2018-01-03 11:34:34

标签: c# vb.net roslyn

如何创建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 ", "")
                                             )
                              )

1 个答案:

答案 0 :(得分:3)

如果你不知道SyntaxTree是如何针对某些特定的SyntaxNode构建的,例如Region。您可以这样做:

请确保您已安装.NET Compiler Platform SDK。这会将Syntax Visualizer添加到Visual Studio中。它允许您检查源代码的SyntaxTree。

转到View->其他Windows->语法Visualizer或在快速启动栏中搜索它以显示以下面板:

Syntax Visualizer

只需将光标放在您要检查的代码上即可。语法Visualizer将跳转到树中的特定节点。如果单击“区域”名称,则可以看到该节点是使用3个特定标记创建的:HashTokenRegionKeyWordStringLiteralToken。以下代码将创建相同的RegionDirectiveTrivia

Dim regionDirectiveTriviaSyntax =
    SyntaxFactory.RegionDirectiveTrivia(
        SyntaxFactory.Token( SyntaxKind.HashToken),
        SyntaxFactory.Token( SyntaxKind.RegionKeyword ) , 
        SyntaxFactory.StringLiteralToken( "SomeRegionName" , "SomeRegionName") )