summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Xaml/CreateValuesVisitor.cs
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2016-09-27 20:10:39 +0200
committerJason Smith <jason.smith@xamarin.com>2016-09-27 11:10:39 -0700
commit3e0ee965d710768f1c434b469f8c1c8371b7659a (patch)
tree1c5fe29f542e098ec68f3f0a029df380e07c41e6 /Xamarin.Forms.Xaml/CreateValuesVisitor.cs
parent0f7b22f49d767c3ae522641c324e7ef6928719b4 (diff)
downloadxamarin-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.cs108
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;