コード例 #1
0
        /// <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);
        }