为了在C#文档中枚举成员,您可以使用Roslyn如下:
var members = SyntaxTree.GetRoot().DescendantNodes().OfType<MemberDeclarationSyntax>();
视觉基本文档的等效内容?
据我所知,与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 ||
…);