访问DocumentationComment节点给出了DocumentationComment琐事?

时间:2012-09-04 06:45:56

标签: c# roslyn

Syntax visualizer screenshot

拥有MethodDeclarationSyntax节点,我试图访问其DocumentationCommentSyntax节点。

我可以通过这样做获得DocumentationComment的琐事:

var firstToken = member.GetFirstToken();
var documentationTrivias = firstToken.LeadingTrivia.Where(t => t.Kind == SyntaxKind.DocumentationComment);
if(documentationTrivias.Count() != 1)
    return null;
var documentationTrivia = documentationTrivias.Single();

现在,我只需要访问树中正下方的Node。我确信这很简单,但我找不到办法。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

要访问该节点,您需要在GetStructure()上致电SyntaxTrivia。这将返回StructuredTriviaSyntax,但由于您知道自己有DocumentationComment,因此它实际上是DocumentationCommentSyntax,因此您可以将其投射到该值。{/ p>

此外,您无需处理FirstToken,而是可以使用GetLeadingTrivia()

var documentationCommentTrivia =
    method.GetLeadingTrivia()
          .SingleOrDefault(t => t.Kind == SyntaxKind.DocumentationComment);
if (documentationCommentTrivia.Kind == SyntaxKind.None)
    return null;

var documentationCommentSyntax =
    (DocumentationCommentSyntax)documentationCommentTrivia.GetStructure();