Skip to content

Commit 12d28dd

Browse files
committed
Serialize numbers with invariant culture.
1 parent 926bc9b commit 12d28dd

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

RestSharp/Serializers/XmlSerializer.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,52 @@ private string GetSerializedValue(object obj) {
179179
{
180180
output = ((bool)obj).ToString(CultureInfo.InvariantCulture).ToLower();
181181
}
182+
if (IsNumeric(obj))
183+
{
184+
return SerializeNumber(obj);
185+
}
182186

183187
return output.ToString();
184188
}
185189

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+
186228
/// <summary>
187229
/// Name of the root element to use when serializing
188230
/// </summary>

0 commit comments

Comments
 (0)