public override TDeclarationNode AddParameters <TDeclarationNode>(
            TDeclarationNode destination,
            IEnumerable <IParameterSymbol> parameters,
            CodeGenerationOptions options,
            CancellationToken cancellationToken)
        {
            var currentParameterList = CSharpSyntaxGenerator.GetParameterList(destination);

            if (currentParameterList == null)
            {
                return(destination);
            }

            var currentParamsCount = currentParameterList.Parameters.Count;
            var seenOptional       = currentParamsCount > 0 && currentParameterList.Parameters[currentParamsCount - 1].Default != null;
            var isFirstParam       = currentParamsCount == 0;
            var newParams          = ArrayBuilder <SyntaxNode> .GetInstance();

            foreach (var parameter in parameters)
            {
                var parameterSyntax = ParameterGenerator.GetParameter(parameter, options, isExplicit: false, isFirstParam: isFirstParam, seenOptional: seenOptional);

                isFirstParam = false;
                seenOptional = seenOptional || parameterSyntax.Default != null;
                newParams.Add(parameterSyntax);
            }

            var finalMember = CSharpSyntaxGenerator.Instance.AddParameters(destination, newParams.ToImmutableAndFree());

            return(Cast <TDeclarationNode>(finalMember));
        }
예제 #2
0
 protected override BaseParameterListSyntax TryGetApplicableList(SyntaxNode node)
 => CSharpSyntaxGenerator.GetParameterList(node);