/// <summary> /// Parse default values from <paramref name="parameterInfo"/> into given "null" values in <paramref name="arguments"/> /// </summary> /// <param name="parameterCount">How many parameters to iterate over</param> /// <param name="arguments">Arguments array</param> /// <param name="parameterInfo">Parameter information array</param> /// <returns><paramref name="arguments"/> where "null" values are parsed as default values picked from <paramref name="parameterInfo"/></returns> public static object[] ParseDefaultValues(int parameterCount, object[] arguments, ParameterInfo[] parameterInfo) { for (int k = 0; k < parameterCount; k++) { if (arguments[k] != null) // Skip already parsed values { continue; } else if (parameterInfo[k].DefaultValue != null) // default value wasn't null { switch (parameterInfo[k].DefaultValue.GetType().ToString()) { case "System.DBNull": { throw new Exception(CompilerMessage.MISSING_ARGUMENT(parameterInfo[k].Name)); } case "System.Int32": { arguments[k] = Convert.ToInt32(parameterInfo[k].DefaultValue, CultureInfo.CurrentCulture); break; } case "System.Single": { arguments[k] = Convert.ToSingle(parameterInfo[k].DefaultValue, CultureInfo.CurrentCulture); break; } case "System.Double": { arguments[k] = Convert.ToDouble(parameterInfo[k].DefaultValue, CultureInfo.CurrentCulture); break; } default: throw new Exception(CompilerMessage.PARAM_DEFAULT_PARSE_ERROR(parameterInfo[k].Name, parameterInfo[k].ParameterType.Name)); } } } return(arguments); }