Integrate the IntermediateSection and IntermediateSymbol mutable changes
Rob Mensching committed
Apr 3, 2021 at 18:16 UTC
73e379d53076184d189a115ac1f5eb3d44d158df
1 file changed
+11
-6
src/WixToolset.Converters.Symbolizer/ConvertSymbols.cs
+11
-6
@@ -39,7 +39,7 @@ namespace WixToolset.Converters.Symbolizer
39
var symbol = GenerateSymbolFromRow(row, wixMediaByDiskId, componentsById, fontsById, bindPathsById, selfRegById, wixFileById, wixDirectoryById);
40
if (symbol != null)
41
{
42
- section.Symbols.Add(symbol);
42
+ section.AddSymbol(symbol);
43
}
44
}
45
}
@@ -733,11 +733,13 @@ namespace WixToolset.Converters.Symbolizer
733
734
private static IntermediateSymbol DefaultSymbolFromRow(Type symbolType, Wix3.Row row, bool columnZeroIsId)
735
{
736
- var symbol = Activator.CreateInstance(symbolType) as IntermediateSymbol;
736
+ var id = columnZeroIsId ? GetIdentifierForRow(row) : null;
737
+
738
+ var createSymbol = symbolType.GetConstructor(new[] { typeof(SourceLineNumber), typeof(Identifier) });
739
+ var symbol = (IntermediateSymbol)createSymbol.Invoke(new object[] { SourceLineNumber4(row.SourceLineNumbers), id });
740
741
SetSymbolFieldsFromRow(row, symbol, columnZeroIsId);
742
740
- symbol.SourceLineNumbers = SourceLineNumber4(row.SourceLineNumbers);
743
return symbol;
744
}
745
@@ -747,7 +749,11 @@ namespace WixToolset.Converters.Symbolizer
749
var fieldDefinitions = columnDefinitions.Select(columnDefinition =>
750
new IntermediateFieldDefinition(columnDefinition.Name, ColumnType3ToIntermediateFieldType4(columnDefinition.Type))).ToArray();
751
var symbolDefinition = new IntermediateSymbolDefinition(row.Table.Name, fieldDefinitions, null);
750
- var symbol = new IntermediateSymbol(symbolDefinition, SourceLineNumber4(row.SourceLineNumbers));
752
+
753
+ var id = columnZeroIsId ? GetIdentifierForRow(row) : null;
754
+
755
+ var createSymbol = typeof(IntermediateSymbol).GetConstructor(new[] { typeof(IntermediateSymbolDefinition), typeof(SourceLineNumber), typeof(Identifier) });
756
+ var symbol = (IntermediateSymbol)createSymbol.Invoke(new object[] { symbolDefinition, SourceLineNumber4(row.SourceLineNumbers), id });
757
758
SetSymbolFieldsFromRow(row, symbol, columnZeroIsId);
759
@@ -756,10 +762,9 @@ namespace WixToolset.Converters.Symbolizer
762
763
private static void SetSymbolFieldsFromRow(Wix3.Row row, IntermediateSymbol symbol, bool columnZeroIsId)
764
{
759
- int offset = 0;
765
+ var offset = 0;
766
if (columnZeroIsId)
767
{
762
- symbol.Id = GetIdentifierForRow(row);
768
offset = 1;
769
}
770