private static IEnumerable <KeyValuePair <string, string> > ParseValue(object parameterValue) { if (parameterValue == null) { return(new KeyValuePair <string, string>[] { }); } var parameterType = parameterValue.GetType(); var genericArguments = parameterType.GenericTypeArguments; if (genericArguments.Count() == 2) { var keyType = genericArguments[0]; var valueType = genericArguments[1]; return(ParametersParser.ParseDictionary(parameterValue, keyType, valueType)); } else if (parameterValue is HTTP.Dictionary) { return(ParametersParser.ParseDictionary <object, object>(parameterValue)); } else if (genericArguments.Count() == 1 || parameterType.IsArray) { var arrayType = genericArguments.Count() > 0 ? genericArguments[0] : parameterType.GetElementType(); return(ParametersParser.ParseArray(parameterValue, arrayType)); } else if (parameterValue is HTTP.Array) { return(ParametersParser.ParseArray <object>(parameterValue)); } else { var resultParameterName = string.Empty; var resultParameterValue = parameterValue.ToString(); return(new[] { new KeyValuePair <string, string>(resultParameterName, resultParameterValue) }); } }
private static IEnumerable <KeyValuePair <string, string> > ParseDictionary(object parameterValue, Type keyType, Type valueType) { if (parameterValue == null) { return(new KeyValuePair <string, string>[] { }); } if (keyType == typeof(string)) { if (valueType == typeof(int)) { return(ParametersParser.ParseDictionary <string, int>(parameterValue)); } else if (valueType == typeof(long)) { return(ParametersParser.ParseDictionary <string, long>(parameterValue)); } else if (valueType == typeof(double)) { return(ParametersParser.ParseDictionary <string, double>(parameterValue)); } else if (valueType == typeof(float)) { return(ParametersParser.ParseDictionary <string, float>(parameterValue)); } else if (valueType == typeof(string)) { return(ParametersParser.ParseDictionary <string, string>(parameterValue)); } else if (valueType == typeof(object)) { return(ParametersParser.ParseDictionary <string, object>(parameterValue)); } } else if (keyType == typeof(object)) { if (valueType == typeof(int)) { return(ParametersParser.ParseDictionary <object, int>(parameterValue)); } else if (valueType == typeof(long)) { return(ParametersParser.ParseDictionary <object, long>(parameterValue)); } else if (valueType == typeof(double)) { return(ParametersParser.ParseDictionary <object, double>(parameterValue)); } else if (valueType == typeof(float)) { return(ParametersParser.ParseDictionary <object, float>(parameterValue)); } else if (valueType == typeof(string)) { return(ParametersParser.ParseDictionary <object, string>(parameterValue)); } else if (valueType == typeof(object)) { return(ParametersParser.ParseDictionary <object, object>(parameterValue)); } } return(new KeyValuePair <string, string>[] { }); }