aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs')
-rw-r--r--src/WixToolset.Data/IntermediateFieldValueExtensions.cs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
index f9322e09..317dfc7f 100644
--- a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
+++ b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
@@ -45,6 +45,45 @@ namespace WixToolset.Data
45 return (bool)value.Data; 45 return (bool)value.Data;
46 } 46 }
47 47
48 public static long AsLargeNumber(this IntermediateFieldValue value)
49 {
50 var result = value.AsNullableLargeNumber();
51 return result ?? 0;
52 }
53
54 public static long? AsNullableLargeNumber(this IntermediateFieldValue value)
55 {
56 if (value?.Data == null)
57 {
58 return null;
59 }
60 else if (value.Data is int n)
61 {
62 return n;
63 }
64 else if (value.Data is long l)
65 {
66 return l;
67 }
68 else if (value.Data is bool b)
69 {
70 return b ? 1 : 0;
71 }
72 else if (value.Data is string s)
73 {
74 try
75 {
76 return Convert.ToInt32(s);
77 }
78 catch (FormatException)
79 {
80 throw new WixException(ErrorMessages.UnableToConvertFieldToNumber(s));
81 }
82 }
83
84 return (long)value.Data;
85 }
86
48 public static int AsNumber(this IntermediateFieldValue value) 87 public static int AsNumber(this IntermediateFieldValue value)
49 { 88 {
50 var result = value.AsNullableNumber(); 89 var result = value.AsNullableNumber();