Использование Roslyn, как перечислять элементы в документе Visual Basic Visual Studio 2017 - PullRequest
0 голосов
/ 29 апреля 2018

Для перечисления членов в документе C # вы можете использовать Roslyn следующим образом:

var members = SyntaxTree.GetRoot().DescendantNodes().OfType<MemberDeclarationSyntax>();

Что эквивалентно документу Visual Basic?

1 Ответ

0 голосов
/ 30 апреля 2018

Насколько я могу судить, ближайший эквивалент MemberDeclarationSyntax в Microsoft.CodeAnalysis.VisualBasic.Syntax равен DeclarationStatementSyntax. Это означает, что следующий код должен работать:

var members = SyntaxTree.GetRoot().DescendantNodes().OfType<DeclarationStatementSyntax>();

Хотя это даст вам больше, чем просто декларации членов. Если вы хотите только участников, вам придется отфильтровать их вручную. Код для этого может выглядеть примерно так:

var members = SyntaxTree.GetRoot().DescendantNodes().Where(node =>
    node is EnumMemberDeclarationSyntax ||
    node is FieldDeclarationSyntax ||
    node is IncompleteMemberSyntax ||
    node is MethodBaseSyntax || 
    …);
...