Beispiel #1
0
        public object[] BuildParameterArray(MethodInfo method)
        {
            var optionalValues = new Dictionary <string, string>();

            for (var i = 0; i < _args.Length - _metadata.RequiredParameterCount(method); i += 2)
            {
                optionalValues.Add(_args[i].Substring(1), _args[i + 1]);
            }
            var parameters      = method.GetParameters();
            var parameterValues = parameters.Select(p => (object)null).ToList();

            var requiredStartIndex = _args.Length - _metadata.RequiredParameterCount(method);
            var requiredValues     = _args.Where((a, i) => i >= requiredStartIndex).ToList();

            for (var i = 0; i < requiredValues.Count; i++)
            {
                parameterValues[i] = StringToObject.ConvertValue(requiredValues[i], parameters[i].ParameterType);
            }
            for (var i = _metadata.RequiredParameterCount(method); i < parameters.Length; i++)
            {
                var optional = _metadata.GetOptional(parameters[i]);
                if (optionalValues.ContainsKey(parameters[i].Name))
                {
                    parameterValues[i] = StringToObject.ConvertValue(optionalValues[parameters[i].Name], parameters[i].ParameterType);
                }
                else
                {
                    parameterValues[i] = optional.Default;
                }
            }
            return(parameterValues.ToArray());
        }
Beispiel #2
0
        private void CheckAllRequiredParametersAreSet(MethodInfo method)
        {
            int minimumArgsLengh = _metadata.RequiredParameterCount(method);

            if (_metadata.IsMulticommand)
            {
                minimumArgsLengh++;
            }
            if (_args.Length < minimumArgsLengh)
            {
                PrintUsage();
                throw new NConsolerException("Error: Not all required parameters are set");
            }
        }