在Visual Studio 2017的视觉基本文档中,使用Roslyn如何枚举成员



为了在C#文档中枚举成员,您可以使用Roslyn如下:

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

视觉基本文档的等效内容?

据我所知,与Microsoft.CodeAnalysis.VisualBasic.SyntaxMemberDeclarationSyntax的最接近的是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 || 
    …);

最新更新