【发布时间】:2018-04-30 06:29:03
【问题描述】:
为了枚举 C# 文档中的成员,您可以使用 Roslyn,如下所示:
var members = SyntaxTree.GetRoot().DescendantNodes().OfType<MemberDeclarationSyntax>();
Visual Basic 文档的等价物是什么?
【问题讨论】:
为了枚举 C# 文档中的成员,您可以使用 Roslyn,如下所示:
var members = SyntaxTree.GetRoot().DescendantNodes().OfType<MemberDeclarationSyntax>();
Visual Basic 文档的等价物是什么?
【问题讨论】:
据我所知,Microsoft.CodeAnalysis.VisualBasic.Syntax 中与MemberDeclarationSyntax 最接近的等价物是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 ||
…);
【讨论】: