diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2016-09-27 20:10:39 +0200 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-09-27 11:10:39 -0700 |
commit | 3e0ee965d710768f1c434b469f8c1c8371b7659a (patch) | |
tree | 1c5fe29f542e098ec68f3f0a029df380e07c41e6 /Xamarin.Forms.Xaml/CreateValuesVisitor.cs | |
parent | 0f7b22f49d767c3ae522641c324e7ef6928719b4 (diff) | |
download | xamarin-forms-3e0ee965d710768f1c434b469f8c1c8371b7659a.tar.gz xamarin-forms-3e0ee965d710768f1c434b469f8c1c8371b7659a.tar.bz2 xamarin-forms-3e0ee965d710768f1c434b469f8c1c8371b7659a.zip |
[Xaml] more primitive types (#385)
* [Xaml] more builtin conversion, and more type primitives
* [XamlC] more builtin conversion, more type primitives
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; |