コード例 #1
0
        bool ICommandExecutorImpl.TryAddToLastParameter(ParameterInfo lastParameter, string value, SortedList <int, object> parameters)
        {
            object argValue;

            if (lastParameter?.ParameterType.IsArray != true)
            {
                return(false);
            }

            Array existingArray;

            if (parameters.TryGetValue(lastParameter.Position, out var existingArgValue))
            {
                existingArray = (Array)existingArgValue;
            }
            else
            {
                existingArray = Array.CreateInstance(lastParameter.ParameterType.GetElementType(), 0);
            }

            argValue = _valueConverter.GetValue(value, lastParameter.ParameterType.GetElementType());

            var newArray = existingArray.ExtendAndAdd(argValue);

            parameters.AddOrUpdate(lastParameter.Position, newArray);

            return(true);
        }