Correctly set the underlying data types when intermediate value loaded
Rob Mensching committed
May 12, 2019 at 15:42 UTC
95d2fa40d86b9aa120c27703b653a90ee89058f8
1 file changed
+42
-10
src/WixToolset.Data/IntermediateFieldValue.cs
+42
-10
@@ -1,4 +1,4 @@
1
-// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3
namespace WixToolset.Data
4
{
@@ -55,18 +55,45 @@ namespace WixToolset.Data
55
56
var value = data;
57
58
- if (data is string)
58
+ switch (value)
59
{
60
- }
61
- else if (data is long)
62
- {
63
- if (type == IntermediateFieldType.Number)
60
+ case int intData:
61
+ switch (type)
62
{
65
- value = Convert.ToInt32(data);
63
+ case IntermediateFieldType.Bool:
64
+ value = intData != 0;
65
+ break;
66
+
67
+ case IntermediateFieldType.LargeNumber:
68
+ value = Convert.ToInt64(data);
69
+ break;
70
+
71
+ case IntermediateFieldType.Path:
72
+ case IntermediateFieldType.String:
73
+ value = intData.ToString();
74
+ break;
75
}
67
- }
68
- else if (data is JsonObject jsonData)
69
- {
76
+ break;
77
+
78
+ case long longData:
79
+ switch (type)
80
+ {
81
+ case IntermediateFieldType.Bool:
82
+ value = longData != 0;
83
+ break;
84
+
85
+ case IntermediateFieldType.Number:
86
+ value = Convert.ToInt32(longData);
87
+ break;
88
+
89
+ case IntermediateFieldType.Path:
90
+ case IntermediateFieldType.String:
91
+ value = longData.ToString();
92
+ break;
93
+ }
94
+ break;
95
+
96
+ case JsonObject jsonData:
97
jsonData.TryGetValue("embeddedIndex", out var embeddedIndex);
98
99
value = new IntermediateFieldPathValue
@@ -75,6 +102,11 @@ namespace WixToolset.Data
102
EmbeddedFileIndex = (embeddedIndex == null) ? null : (int?)Convert.ToInt32(embeddedIndex),
103
Path = jsonData.GetValueOrDefault<string>("path"),
104
};
105
+ break;
106
+
107
+ // Nothing to do for this case, so leave it out.
108
+ // case string stringData:
109
+ // break;
110
}
111
112
var previousValueJson = jsonObject.GetValueOrDefault<JsonObject>("prev");