private static void CheckOptionalParametersAltNamesAreNotDuplicated(MethodBase method) { List <string> parameterNames = new List <string>(); foreach (ParameterInfo parameter in method.GetParameters()) { if (IsRequired(parameter)) { parameterNames.Add(parameter.Name.ToLower()); } else { if (parameterNames.Contains(parameter.Name.ToLower())) { throw new NConsolerException("Found duplicated parameter name \"{0}\" in method \"{1}\". Please check alt names for optional parameters", parameter.Name, method.Name); } parameterNames.Add(parameter.Name.ToLower()); OptionalAttribute optional = GetOptional(parameter); foreach (string altName in optional.AltNames) { if (parameterNames.Contains(altName.ToLower())) { throw new NConsolerException("Found duplicated parameter name \"{0}\" in method \"{1}\". Please check alt names for optional parameters", altName, method.Name); } parameterNames.Add(altName.ToLower()); } } } }
private void CheckUnknownParametersAreNotPassed(MethodInfo method) { List <string> parameterNames = new List <string>(); foreach (ParameterInfo parameter in method.GetParameters()) { if (IsRequired(parameter)) { continue; } parameterNames.Add(parameter.Name.ToLower()); OptionalAttribute optional = GetOptional(parameter); foreach (string altName in optional.AltNames) { parameterNames.Add(altName.ToLower()); } } foreach (string optionalParameter in OptionalParameters(method)) { string name = ParameterName(optionalParameter); if (!parameterNames.Contains(name.ToLower())) { throw new NConsolerException("Unknown parameter name {0}", optionalParameter); } } }
private object[] BuildParameterArray(MethodInfo method) { int argumentIndex = IsMulticommand ? 1 : 0; List <object> parameterValues = new List <object>(); Dictionary <string, ParameterData> aliases = new Dictionary <string, ParameterData>(); foreach (ParameterInfo info in method.GetParameters()) { if (IsRequired(info)) { parameterValues.Add(ConvertValue(_args[argumentIndex], info.ParameterType)); } else { OptionalAttribute optional = GetOptional(info); foreach (string altName in optional.AltNames) { aliases.Add(altName.ToLower(), new ParameterData(parameterValues.Count, info.ParameterType)); } aliases.Add(info.Name.ToLower(), new ParameterData(parameterValues.Count, info.ParameterType)); parameterValues.Add(optional.Default); } argumentIndex++; } foreach (string optionalParameter in OptionalParameters(method)) { string name = ParameterName(optionalParameter); string value = ParameterValue(optionalParameter); parameterValues[aliases[name].position] = ConvertValue(value, aliases[name].type); } return(parameterValues.ToArray()); }
private static void CheckOptionalParametersDefaultValuesAreAssignableToRealParameterTypes(MethodBase method) { foreach (ParameterInfo parameter in method.GetParameters()) { if (IsRequired(parameter)) { continue; } OptionalAttribute optional = GetOptional(parameter); if (optional.Default != null && optional.Default.GetType() == typeof(string) && CanBeConvertedToDate(optional.Default.ToString())) { return; } if ((optional.Default == null && !CanBeNull(parameter.ParameterType)) || (optional.Default != null && !optional.Default.GetType().IsAssignableFrom(parameter.ParameterType))) { throw new NConsolerException( "Default value for an optional parameter \"{0}\" in method \"{1}\" can not be assigned to the parameter", parameter.Name, method.Name); } } }
private static void CheckOptionalParametersDefaultValuesAreAssignableToRealParameterTypes(MethodBase method) { foreach (ParameterInfo parameter in method.GetParameters()) { if (IsRequired(parameter)) { continue; } OptionalAttribute optional = GetOptional(parameter); if (!optional.Default.GetType().IsAssignableFrom(parameter.ParameterType)) { throw new NConsolerException("Default value for an optional parameter \"{0}\" in method \"{1}\" can not be assigned to the parameter", parameter.Name, method.Name); } } }
private static string GetDisplayName(ParameterInfo parameter) { if (IsRequired(parameter)) { return(parameter.Name); } OptionalAttribute optional = GetOptional(parameter); string parameterName = (optional.AltNames.Length > 0) ? optional.AltNames[0] : parameter.Name; if (parameter.ParameterType != typeof(bool)) { parameterName += ":" + ValueDescription(parameter.ParameterType); } return("[/" + parameterName + "]"); }