|
16 | 16 |
|
17 | 17 | using System;
|
18 | 18 | using System.Collections;
|
| 19 | +using System.Globalization; |
19 | 20 | using System.Linq;
|
20 | 21 | using System.Xml.Linq;
|
21 | 22 | using RestSharp.Extensions;
|
@@ -172,16 +173,58 @@ private string GetSerializedValue(object obj) {
|
172 | 173 |
|
173 | 174 | if (obj is DateTime && DateFormat.HasValue())
|
174 | 175 | {
|
175 |
| - output = ((DateTime) obj).ToString(DateFormat); |
| 176 | + output = ((DateTime) obj).ToString(DateFormat, CultureInfo.InvariantCulture); |
176 | 177 | }
|
177 | 178 | if (obj is bool)
|
178 | 179 | {
|
179 |
| - output = obj.ToString().ToLower(); |
| 180 | + output = ((bool)obj).ToString(CultureInfo.InvariantCulture).ToLower(); |
| 181 | + } |
| 182 | + if (IsNumeric(obj)) |
| 183 | + { |
| 184 | + return SerializeNumber(obj); |
180 | 185 | }
|
181 | 186 |
|
182 | 187 | return output.ToString();
|
183 | 188 | }
|
184 | 189 |
|
| 190 | + static string SerializeNumber(object number) |
| 191 | + { |
| 192 | + if (number is long) |
| 193 | + return ((long)number).ToString(CultureInfo.InvariantCulture); |
| 194 | + else if (number is ulong) |
| 195 | + return ((ulong)number).ToString(CultureInfo.InvariantCulture); |
| 196 | + else if (number is int) |
| 197 | + return ((int)number).ToString(CultureInfo.InvariantCulture); |
| 198 | + else if (number is uint) |
| 199 | + return ((uint)number).ToString(CultureInfo.InvariantCulture); |
| 200 | + else if (number is decimal) |
| 201 | + return ((decimal)number).ToString(CultureInfo.InvariantCulture); |
| 202 | + else if (number is float) |
| 203 | + return ((float)number).ToString(CultureInfo.InvariantCulture); |
| 204 | + else |
| 205 | + return (Convert.ToDouble(number, CultureInfo.InvariantCulture).ToString("r", CultureInfo.InvariantCulture)); |
| 206 | + } |
| 207 | + |
| 208 | + /// <summary> |
| 209 | + /// Determines if a given object is numeric in any way |
| 210 | + /// (can be integer, double, null, etc). |
| 211 | + /// </summary> |
| 212 | + static bool IsNumeric(object value) |
| 213 | + { |
| 214 | + if (value is sbyte) return true; |
| 215 | + if (value is byte) return true; |
| 216 | + if (value is short) return true; |
| 217 | + if (value is ushort) return true; |
| 218 | + if (value is int) return true; |
| 219 | + if (value is uint) return true; |
| 220 | + if (value is long) return true; |
| 221 | + if (value is ulong) return true; |
| 222 | + if (value is float) return true; |
| 223 | + if (value is double) return true; |
| 224 | + if (value is decimal) return true; |
| 225 | + return false; |
| 226 | + } |
| 227 | + |
185 | 228 | /// <summary>
|
186 | 229 | /// Name of the root element to use when serializing
|
187 | 230 | /// </summary>
|
|
0 commit comments