C# 什么是「;GlobalStatementSyntax“;Roslyn中的语法节点类型
我在调查Roslyn中实现C# 什么是「;GlobalStatementSyntax“;Roslyn中的语法节点类型,c#,roslyn,C#,Roslyn,我在调查Roslyn中实现MemberDeclarationSyntax的语法节点类,遇到了GlobalStatementSyntax类。 什么样的代码使用GlobalStatementSyntax节点生成语法树?为什么GlobalStatementSyntax源自MemberDeclarationSyntax?这样的节点能代表某一类型的成员吗?两分钟的实验证实,如果您使用新功能,您会得到这些节点。也就是说,如果您的整个计划是: Console.WriteLine(args.Count); (
MemberDeclarationSyntax
的语法节点类,遇到了GlobalStatementSyntax
类。
什么样的代码使用
GlobalStatementSyntax
节点生成语法树?为什么GlobalStatementSyntax
源自MemberDeclarationSyntax
?这样的节点能代表某一类型的成员吗?两分钟的实验证实,如果您使用新功能,您会得到这些节点。也就是说,如果您的整个计划是:
Console.WriteLine(args.Count);
(无类
,无无效主
等)
然后,生成此结构:
CompilationUnit()
.WithMembers(
SingletonList<MemberDeclarationSyntax>(
GlobalStatement(
ExpressionStatement(
InvocationExpression(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
IdentifierName("Console"),
IdentifierName("WriteLine")))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList<ArgumentSyntax>(
Argument(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
IdentifierName("args"),
IdentifierName("Count"))))))))))
.NormalizeWhitespace()
编译单元()
.与成员(
单音表(
全球陈述(
表达陈述(
调用表达式(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识名称(“控制台”),
标识符名称(“写入线”))
.WithArgumentList(
论据列表(
单音分隔列表(
论据(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识符名称(“args”),
标识名称(“计数”()()())
.normalize空白()
两分钟的实验证实,如果使用新功能,您将获得这些功能。也就是说,如果您的整个计划是:
Console.WriteLine(args.Count);
(无类
,无无效主
等)
然后,生成此结构:
CompilationUnit()
.WithMembers(
SingletonList<MemberDeclarationSyntax>(
GlobalStatement(
ExpressionStatement(
InvocationExpression(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
IdentifierName("Console"),
IdentifierName("WriteLine")))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList<ArgumentSyntax>(
Argument(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
IdentifierName("args"),
IdentifierName("Count"))))))))))
.NormalizeWhitespace()
编译单元()
.与成员(
单音表(
全球陈述(
表达陈述(
调用表达式(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识名称(“控制台”),
标识符名称(“写入线”))
.WithArgumentList(
论据列表(
单音分隔列表(
论据(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识符名称(“args”),
标识名称(“计数”()()()())("计数"())))
.normalize空白()
为什么GlobalStatementSyntax从MemberDeclarationSyntax派生而来?为什么GlobalStatementSyntax从MemberDeclarationSyntax派生而来?