diff options
Diffstat (limited to 'Xamarin.Forms.Xaml/CreateValuesVisitor.cs')
-rw-r--r-- | Xamarin.Forms.Xaml/CreateValuesVisitor.cs | 108 |
1 files changed, 61 insertions, 47 deletions
diff --git a/Xamarin.Forms.Xaml/CreateValuesVisitor.cs b/Xamarin.Forms.Xaml/CreateValuesVisitor.cs index 25a936fa..c2331bf1 100644 --- a/Xamarin.Forms.Xaml/CreateValuesVisitor.cs +++ b/Xamarin.Forms.Xaml/CreateValuesVisitor.cs @@ -296,73 +296,87 @@ namespace Xamarin.Forms.Xaml { var valuestring = ((ValueNode)node.CollectionItems[0]).Value as string; - if (nodeType == typeof (bool)) - { - bool outbool; - if (bool.TryParse(valuestring, out outbool)) - value = outbool; + if (nodeType == typeof(SByte)) { + sbyte retval; + if (sbyte.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; } - else if (nodeType == typeof (char)) - { - char retval; - if (char.TryParse(valuestring, out retval)) - value = retval; + if (nodeType == typeof(Int16)) { + short retval; + if (short.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; } - else if (nodeType == typeof (string)) - value = valuestring; - else if (nodeType == typeof (decimal)) - { - decimal retval; - if (decimal.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + if (nodeType == typeof(Int32)) { + int retval; + if (int.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; } - else if (nodeType == typeof (float)) - { + if (nodeType == typeof(Int64)) { + long retval; + if (long.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; + } + if (nodeType == typeof(Byte)) { + byte retval; + if (byte.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; + } + if (nodeType == typeof(UInt16)) { + ushort retval; + if (ushort.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; + } + if (nodeType == typeof(UInt32)) { + uint retval; + if (uint.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; + } + if (nodeType == typeof(UInt64)) { + ulong retval; + if (ulong.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; + } + if (nodeType == typeof(Single)) { float retval; if (float.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + return retval; } - else if (nodeType == typeof (double)) - { + if (nodeType == typeof(Double)) { double retval; if (double.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; - } - else if (nodeType == typeof (byte)) - { - byte retval; - if (byte.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + return retval; } - else if (nodeType == typeof (short)) + if (nodeType == typeof (Boolean)) { - short retval; - if (short.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + bool outbool; + if (bool.TryParse(valuestring, out outbool)) + return outbool; } - else if (nodeType == typeof (int)) - { - int retval; - if (int.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + if (nodeType == typeof(TimeSpan)) { + TimeSpan retval; + if (TimeSpan.TryParse(valuestring, CultureInfo.InvariantCulture, out retval)) + return retval; } - else if (nodeType == typeof (long)) + if (nodeType == typeof (char)) { - long retval; - if (long.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) - value = retval; + char retval; + if (char.TryParse(valuestring, out retval)) + return retval; } - else if (nodeType == typeof (TimeSpan)) + if (nodeType == typeof (string)) + return valuestring; + if (nodeType == typeof (decimal)) { - TimeSpan retval; - if (TimeSpan.TryParse(valuestring, CultureInfo.InvariantCulture, out retval)) - value = retval; + decimal retval; + if (decimal.TryParse(valuestring, NumberStyles.Number, CultureInfo.InvariantCulture, out retval)) + return retval; } + else if (nodeType == typeof (Uri)) { Uri retval; if (Uri.TryCreate(valuestring, UriKind.RelativeOrAbsolute, out retval)) - value = retval; + return retval; } } return value; |