@@ -179,10 +179,52 @@ private string GetSerializedValue(object obj) {
179
179
{
180
180
output = ( ( bool ) obj ) . ToString ( CultureInfo . InvariantCulture ) . ToLower ( ) ;
181
181
}
182
+ if ( IsNumeric ( obj ) )
183
+ {
184
+ return SerializeNumber ( obj ) ;
185
+ }
182
186
183
187
return output . ToString ( ) ;
184
188
}
185
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
+
186
228
/// <summary>
187
229
/// Name of the root element to use when serializing
188
230
/// </summary>
0 commit comments