首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Roslyn区域琐事

Roslyn区域琐事
EN

Stack Overflow用户
提问于 2018-01-03 19:34:34
回答 1查看 1K关注 0票数 0

如何创建RegionDirectiveTriviaSyntax?

下面是我得到的最接近的结果,它失败了。第三个参数被定义为"name“,但没有对应的类型。我尝试过文字,标识符和其他几种类型的标记,但他们都抱怨这种类型。有没有一种正确的方法来解析一个,这样我就不用做“替换”了?

trivia是一个现有的C# SyntaxTrivia,我正在创建一个VB RegionDirectiveTriviaSyntax:

代码语言:javascript
复制
Dim node As RegionDirectiveTriviaSyntax =
                SyntaxFactory.RegionDirectiveTrivia
                              (SyntaxFactory.Token(SyntaxKind.HashToken),
                               SyntaxFactory.Token(SyntaxKind.RegionKeyword),
                               SyntaxFactory.Token
                                             (SyntaxKind.IdentifierToken, 
                                              trivia.ToString.Replace("#region ", "")
                                             )
                              )
EN

回答 1

Stack Overflow用户

发布于 2018-01-05 02:19:27

如果您不知道如何为某些特定的SyntaxNode构建SyntaxTree,比如本例中的Region。以下是您可以执行的操作:

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

进入View->Other Windows->Syntax Visualizer或在快速启动栏中搜索它,以显示以下面板:

只需将光标放在要检查的代码上即可。语法可视化工具将跳转到树中的特定节点。如果您单击区域的名称,您可以看到该节点是使用3个特定的标记创建的:HashTokenRegionKeyWord和一个StringLiteralToken。下面的代码将创建相同的RegionDirectiveTrivia

代码语言:javascript
复制
Dim regionDirectiveTriviaSyntax =
    SyntaxFactory.RegionDirectiveTrivia(
        SyntaxFactory.Token( SyntaxKind.HashToken),
        SyntaxFactory.Token( SyntaxKind.RegionKeyword ) , 
        SyntaxFactory.StringLiteralToken( "SomeRegionName" , "SomeRegionName") )
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48076563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档