我已经获得了以下代码,但我认为参数不正确。我如何实际使用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"))
)
);
答案 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[]
。
思想?