From a6091afa5bd24fe65e7fc20f179ed888301afdf8 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sat, 18 Apr 2020 14:43:31 +1000 Subject: Test ability for an extension to have a custom strongly typed row during binding. --- .../Example.Extension/ExampleTupleDefinitions.cs | 42 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'src/test/Example.Extension/ExampleTupleDefinitions.cs') diff --git a/src/test/Example.Extension/ExampleTupleDefinitions.cs b/src/test/Example.Extension/ExampleTupleDefinitions.cs index dd8b5bbf..446c2c45 100644 --- a/src/test/Example.Extension/ExampleTupleDefinitions.cs +++ b/src/test/Example.Extension/ExampleTupleDefinitions.cs @@ -2,15 +2,20 @@ namespace Example.Extension { + using System; using WixToolset.Data; using WixToolset.Data.Burn; - public static class ExampleTupleDefinitions + public enum ExampleTupleDefinitionType { - public const string ExampleName = "Example"; + Example, + ExampleSearch, + } + public static class ExampleTupleDefinitions + { public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( - ExampleName, + ExampleTupleDefinitionType.Example.ToString(), new[] { new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), @@ -18,7 +23,7 @@ namespace Example.Extension typeof(ExampleTuple)); public static readonly IntermediateTupleDefinition ExampleSearch = new IntermediateTupleDefinition( - nameof(ExampleSearch), + ExampleTupleDefinitionType.ExampleSearch.ToString(), new[] { new IntermediateFieldDefinition(nameof(ExampleSearchTupleFields.SearchFor), IntermediateFieldType.String), @@ -29,5 +34,34 @@ namespace Example.Extension { ExampleSearch.AddTag(BurnConstants.BundleExtensionSearchTupleDefinitionTag); } + + public static bool TryGetTupleType(string name, out ExampleTupleDefinitionType type) + { + return Enum.TryParse(name, out type); + } + + public static IntermediateTupleDefinition ByName(string name) + { + if (!TryGetTupleType(name, out var type)) + { + return null; + } + return ByType(type); + } + + public static IntermediateTupleDefinition ByType(ExampleTupleDefinitionType type) + { + switch (type) + { + case ExampleTupleDefinitionType.Example: + return ExampleTupleDefinitions.Example; + + case ExampleTupleDefinitionType.ExampleSearch: + return ExampleTupleDefinitions.ExampleSearch; + + default: + throw new ArgumentOutOfRangeException(nameof(type)); + } + } } } -- cgit v1.2.3-55-g6feb