繁体   English   中英

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

[英]How do I generate an array type in a Roslyn code generator?

我想生成一个返回类型为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[]类型?

数组类型的[]部分称为等级说明符 等级说明符描述数组的大小和维度àla int[10,3][12]

ArrayType工厂方法创建一个完全不具有RankSpecifiersArrayTypeSyntax 要生成常用的Foo[]语法,您需要为其指定一个空的秩说明符。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM