如何指定Roslyn方法参数

时间:2018-05-25 19:03:11

标签: c# parameters constructor roslyn

我已经获得了以下代码,但我认为参数不正确。我如何实际使用Roslyn代码生成位来指定参数?请注意,它也必须是array。谢谢!

using static SyntaxFactory;
using static SyntaxKind;
using static LanguageVersion;
// ...
MemberDeclarationSyntax GeneratePrivateBytesCtor()
    => ConstructorDeclaration(Descriptor.TypeIdentifier)
        .WithModifiers(SyntaxTokenList.Create(Token(PrivateKeyword)))
        .AddParameterListParameters(ParseParameterList("byte[] bytes").Parameters.Single())
        .WithInitializer(ConstructorInitializer(BaseConstructorInitializer)
            .AddArgumentListArguments(
                Argument(IdentifierName("bytes"))
            )
        );

1 个答案:

答案 0 :(得分:0)

经过一些挖掘和修补后,我想知道这是否是一种更好的方法?

const string bytes = nameof(bytes);
const SyntaxKind arrayType = SyntaxKind.ArrayType;

var bytesSyntax = Parameter(Identifier(bytes))
    .WithModifiers(Create(Token(arrayType)))
    .WithType(ParseTypeName(typeof(byte).FullName))
    ;

再次,假设某些静态使用语句。

或者,甚至可能是这样的:

var bytesSyntax = Parameter(Identifier(bytes))
    .WithType(ParseTypeName(typeof(byte[]).FullName))
    ;

基于*反射**的远距离经验的假设,其中我似乎记得“阵列”沿着这些线被识别为类型“修饰符”。我可能在那里弄​​错了;它已经有一段时间了,但在这里我发现我想将参数声明为byte[]

思想?