gpt4 book ai didi

c# - 如何在 Roslyn 代码生成器中生成数组类型?

转载 作者:行者123 更新时间:2023-11-30 20:27:38 25 4
gpt4 key购买 nike

我想生成一个返回类型为 Foo[] 的方法。我的代码大致如下所示(使用 using static SyntaxFactory):

var methodDecl = MethodDeclaration(
returnType: ArrayType(IdentifierName("Foo")),
identifier: Identifier("Bar"),
parameterList: ParameterList(),
body: Block(ReturnStatement(LiteralExpression(SyntaxKind.NullLiteralExpression))),
// ...
);

当我在调试 Visual Studio 窗口中执行重构时,它不会生成 Foo[] 类型的 [] 部分:

Foo Bar()
{
return null;
}

如何让它生成一个实际的 Foo[] 类型?

最佳答案

数组类型的 [] 部分称为 rank 说明符。等级说明符描述了数组的大小和维度,就像 int[10,3][12] 一样。

ArrayType 工厂方法创建了一个完全没有RankSpecifiersArrayTypeSyntax。要生成常用的 Foo[] 语法,您需要为其提供一个空的等级说明符。

ArrayType(IdentifierName("Foo"), SingletonList(ArrayRankSpecifier()))

对我来说似乎有点愚蠢的默认设置,因为一维数组是迄今为止最常见的。据我所知,这在任何地方都没有记录。

关于c# - 如何在 Roslyn 代码生成器中生成数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com