diff options
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs')
| -rw-r--r-- | src/WixToolset.Data/IntermediateFieldValueExtensions.cs | 39 |
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(); |
