コンストラクターの名前付き引数を作成するときに、使用可能なコンストラクターだけが。を要求するという問題が発生していますrefOrOutKeyword
SyntaxToken
。合格null
は許可されておらず、さらにSyntax.ParseToken("")
失敗します。Syntax.Token(SyntaxKind.RefKeyword)
および:Syntax.Token(SyntaxKind.OutKeyword)
のいずれref
かを挿入するため、どちらも不適切です。out
var ctorArgs = Syntax.ArgumentList();
var ctor = enclosingType.Members
.OfType<ConstructorDeclarationSyntax>()
.OrderBy(cc => cc.ParameterList.Parameters.Count)
.FirstOrDefault();
if (ctor != null)
{
//
// Summary:
// Creates a new ArgumentSyntax instance.
// public static ArgumentSyntax Argument(
// NameColonSyntax nameColon,
// SyntaxToken refOrOutKeyword,
// ExpressionSyntax expression);
ctorArgs.AddArguments((
from param in ctor.ParameterList.Parameters
select Syntax.Argument(
Syntax.NameColon(param.Identifier.ValueText),
Syntax.ParseToken("") /* <- what to put here */,
Syntax.DefaultExpression(param.Type))
).ToArray());
}
名前付き引数を作成する方法を説明するための適切なドキュメントも見つかりませんでした。