aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-14 11:20:54 -0700
committerRob Mensching <rob@firegiant.com>2021-03-14 11:32:08 -0700
commite8ebab2ce3991c3abb9942ce48a026a2169df01e (patch)
tree7a43209081067ee5b8379f2b1ca9bdbc4f7ee51f /src/WixToolset.Core
parentdad79129d26cfb12f0d8894d9189334fa982b823 (diff)
downloadwix-e8ebab2ce3991c3abb9942ce48a026a2169df01e.tar.gz
wix-e8ebab2ce3991c3abb9942ce48a026a2169df01e.tar.bz2
wix-e8ebab2ce3991c3abb9942ce48a026a2169df01e.zip
Remove use of removed IWixToolsetServiceProvider
Diffstat (limited to 'src/WixToolset.Core')
-rw-r--r--src/WixToolset.Core/BindContext.cs6
-rw-r--r--src/WixToolset.Core/Binder.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs8
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLine.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineArguments.cs2
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineContext.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/CompileCommand.cs6
-rw-r--r--src/WixToolset.Core/CommandLine/DecompileCommand.cs4
-rw-r--r--src/WixToolset.Core/CompileContext.cs6
-rw-r--r--src/WixToolset.Core/Compiler.cs8
-rw-r--r--src/WixToolset.Core/DecompileContext.cs4
-rw-r--r--src/WixToolset.Core/Decompiler.cs4
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs2
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs4
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs12
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/SymbolDefinitionCreator.cs4
-rw-r--r--src/WixToolset.Core/IncribeContext.cs4
-rw-r--r--src/WixToolset.Core/LayoutContext.cs6
-rw-r--r--src/WixToolset.Core/LayoutCreator.cs4
-rw-r--r--src/WixToolset.Core/Librarian.cs4
-rw-r--r--src/WixToolset.Core/LibraryContext.cs5
-rw-r--r--src/WixToolset.Core/LinkContext.cs5
-rw-r--r--src/WixToolset.Core/Linker.cs4
-rw-r--r--src/WixToolset.Core/LocalizationParser.cs2
-rw-r--r--src/WixToolset.Core/PreprocessContext.cs6
-rw-r--r--src/WixToolset.Core/Preprocessor.cs6
-rw-r--r--src/WixToolset.Core/ResolveContext.cs5
-rw-r--r--src/WixToolset.Core/Resolver.cs4
-rw-r--r--src/WixToolset.Core/UnbindContext.cs6
-rw-r--r--src/WixToolset.Core/Unbinder.cs5
-rw-r--r--src/WixToolset.Core/VariableResolver.cs4
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs23
32 files changed, 81 insertions, 94 deletions
diff --git a/src/WixToolset.Core/BindContext.cs b/src/WixToolset.Core/BindContext.cs
index 47375fb0..6b0a09a2 100644
--- a/src/WixToolset.Core/BindContext.cs
+++ b/src/WixToolset.Core/BindContext.cs
@@ -2,21 +2,21 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
11 11
12 internal class BindContext : IBindContext 12 internal class BindContext : IBindContext
13 { 13 {
14 internal BindContext(IWixToolsetServiceProvider serviceProvider) 14 internal BindContext(IServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
18 18
19 public IWixToolsetServiceProvider ServiceProvider { get; } 19 public IServiceProvider ServiceProvider { get; }
20 20
21 public IEnumerable<BindPath> BindPaths { get; set; } 21 public IEnumerable<BindPath> BindPaths { get; set; }
22 22
diff --git a/src/WixToolset.Core/Binder.cs b/src/WixToolset.Core/Binder.cs
index faaa3ec0..090b5d32 100644
--- a/src/WixToolset.Core/Binder.cs
+++ b/src/WixToolset.Core/Binder.cs
@@ -17,12 +17,12 @@ namespace WixToolset.Core
17 /// </summary> 17 /// </summary>
18 internal class Binder : IBinder 18 internal class Binder : IBinder
19 { 19 {
20 internal Binder(IWixToolsetServiceProvider serviceProvider) 20 internal Binder(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 } 23 }
24 24
25 public IWixToolsetServiceProvider ServiceProvider { get; } 25 public IServiceProvider ServiceProvider { get; }
26 26
27 public IBindResult Bind(IBindContext context) 27 public IBindResult Bind(IBindContext context)
28 { 28 {
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index b687e07b..baca91ba 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -18,7 +18,7 @@ namespace WixToolset.Core.CommandLine
18 { 18 {
19 private readonly CommandLine commandLine; 19 private readonly CommandLine commandLine;
20 20
21 public BuildCommand(IWixToolsetServiceProvider serviceProvider) 21 public BuildCommand(IServiceProvider serviceProvider)
22 { 22 {
23 this.ServiceProvider = serviceProvider; 23 this.ServiceProvider = serviceProvider;
24 this.Messaging = serviceProvider.GetService<IMessaging>(); 24 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -30,7 +30,7 @@ namespace WixToolset.Core.CommandLine
30 30
31 public bool StopParsing => this.commandLine.ShowHelp; 31 public bool StopParsing => this.commandLine.ShowHelp;
32 32
33 private IWixToolsetServiceProvider ServiceProvider { get; } 33 private IServiceProvider ServiceProvider { get; }
34 34
35 private IMessaging Messaging { get; } 35 private IMessaging Messaging { get; }
36 36
@@ -541,13 +541,13 @@ namespace WixToolset.Core.CommandLine
541 541
542 public string BuiltOutputsFile { get; private set; } 542 public string BuiltOutputsFile { get; private set; }
543 543
544 public CommandLine(IWixToolsetServiceProvider serviceProvider, IMessaging messaging) 544 public CommandLine(IServiceProvider serviceProvider, IMessaging messaging)
545 { 545 {
546 this.ServiceProvider = serviceProvider; 546 this.ServiceProvider = serviceProvider;
547 this.Messaging = messaging; 547 this.Messaging = messaging;
548 } 548 }
549 549
550 private IWixToolsetServiceProvider ServiceProvider { get; } 550 private IServiceProvider ServiceProvider { get; }
551 551
552 private IMessaging Messaging { get; } 552 private IMessaging Messaging { get; }
553 553
diff --git a/src/WixToolset.Core/CommandLine/CommandLine.cs b/src/WixToolset.Core/CommandLine/CommandLine.cs
index 7371628b..b87b6a5d 100644
--- a/src/WixToolset.Core/CommandLine/CommandLine.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLine.cs
@@ -21,9 +21,9 @@ namespace WixToolset.Core.CommandLine
21 21
22 internal class CommandLine : ICommandLine 22 internal class CommandLine : ICommandLine
23 { 23 {
24 public CommandLine(IWixToolsetServiceProvider serviceProvider) => this.ServiceProvider = serviceProvider; 24 public CommandLine(IServiceProvider serviceProvider) => this.ServiceProvider = serviceProvider;
25 25
26 private IWixToolsetServiceProvider ServiceProvider { get; } 26 private IServiceProvider ServiceProvider { get; }
27 27
28 public ICommandLineCommand CreateCommand(string[] args) 28 public ICommandLineCommand CreateCommand(string[] args)
29 { 29 {
diff --git a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
index 456e19d7..40b8b320 100644
--- a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Core.CommandLine
12 12
13 internal class CommandLineArguments : ICommandLineArguments 13 internal class CommandLineArguments : ICommandLineArguments
14 { 14 {
15 public CommandLineArguments(IWixToolsetServiceProvider serviceProvider) 15 public CommandLineArguments(IServiceProvider serviceProvider)
16 { 16 {
17 this.Messaging = serviceProvider.GetService<IMessaging>(); 17 this.Messaging = serviceProvider.GetService<IMessaging>();
18 } 18 }
diff --git a/src/WixToolset.Core/CommandLine/CommandLineContext.cs b/src/WixToolset.Core/CommandLine/CommandLineContext.cs
index 6bf05590..8d5cf120 100644
--- a/src/WixToolset.Core/CommandLine/CommandLineContext.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLineContext.cs
@@ -8,12 +8,12 @@ namespace WixToolset.Core.CommandLine
8 8
9 internal class CommandLineContext : ICommandLineContext 9 internal class CommandLineContext : ICommandLineContext
10 { 10 {
11 public CommandLineContext(IWixToolsetServiceProvider serviceProvider) 11 public CommandLineContext(IServiceProvider serviceProvider)
12 { 12 {
13 this.ServiceProvider = serviceProvider; 13 this.ServiceProvider = serviceProvider;
14 } 14 }
15 15
16 public IWixToolsetServiceProvider ServiceProvider { get; } 16 public IServiceProvider ServiceProvider { get; }
17 17
18 public IExtensionManager ExtensionManager { get; set; } 18 public IExtensionManager ExtensionManager { get; set; }
19 19
diff --git a/src/WixToolset.Core/CommandLine/CompileCommand.cs b/src/WixToolset.Core/CommandLine/CompileCommand.cs
index f6f9c623..54d1b6f1 100644
--- a/src/WixToolset.Core/CommandLine/CompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/CompileCommand.cs
@@ -13,14 +13,14 @@ namespace WixToolset.Core.CommandLine
13 13
14 internal class CompileCommand : ICommandLineCommand 14 internal class CompileCommand : ICommandLineCommand
15 { 15 {
16 public CompileCommand(IWixToolsetServiceProvider serviceProvider) 16 public CompileCommand(IServiceProvider serviceProvider)
17 { 17 {
18 this.ServiceProvider = serviceProvider; 18 this.ServiceProvider = serviceProvider;
19 this.Messaging = serviceProvider.GetService<IMessaging>(); 19 this.Messaging = serviceProvider.GetService<IMessaging>();
20 this.ExtensionManager = serviceProvider.GetService<IExtensionManager>(); 20 this.ExtensionManager = serviceProvider.GetService<IExtensionManager>();
21 } 21 }
22 22
23 public CompileCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform) 23 public CompileCommand(IServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform)
24 { 24 {
25 this.ServiceProvider = serviceProvider; 25 this.ServiceProvider = serviceProvider;
26 this.Messaging = serviceProvider.GetService<IMessaging>(); 26 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -30,7 +30,7 @@ namespace WixToolset.Core.CommandLine
30 this.Platform = platform; 30 this.Platform = platform;
31 } 31 }
32 32
33 private IWixToolsetServiceProvider ServiceProvider { get; } 33 private IServiceProvider ServiceProvider { get; }
34 34
35 public IMessaging Messaging { get; } 35 public IMessaging Messaging { get; }
36 36
diff --git a/src/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
index 53d0c309..fc0ab0c9 100644
--- a/src/WixToolset.Core/CommandLine/DecompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.CommandLine
16 { 16 {
17 private readonly CommandLine commandLine; 17 private readonly CommandLine commandLine;
18 18
19 public DecompileCommand(IWixToolsetServiceProvider serviceProvider) 19 public DecompileCommand(IServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 this.Messaging = serviceProvider.GetService<IMessaging>(); 22 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -27,7 +27,7 @@ namespace WixToolset.Core.CommandLine
27 27
28 public bool StopParsing => this.commandLine.ShowHelp; 28 public bool StopParsing => this.commandLine.ShowHelp;
29 29
30 private IWixToolsetServiceProvider ServiceProvider { get; } 30 private IServiceProvider ServiceProvider { get; }
31 31
32 public IMessaging Messaging { get; } 32 public IMessaging Messaging { get; }
33 33
diff --git a/src/WixToolset.Core/CompileContext.cs b/src/WixToolset.Core/CompileContext.cs
index e781b692..2aeb3998 100644
--- a/src/WixToolset.Core/CompileContext.cs
+++ b/src/WixToolset.Core/CompileContext.cs
@@ -2,22 +2,22 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using System.Xml.Linq; 8 using System.Xml.Linq;
8 using WixToolset.Data; 9 using WixToolset.Data;
9 using WixToolset.Extensibility; 10 using WixToolset.Extensibility;
10 using WixToolset.Extensibility.Data; 11 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services;
12 12
13 internal class CompileContext : ICompileContext 13 internal class CompileContext : ICompileContext
14 { 14 {
15 internal CompileContext(IWixToolsetServiceProvider serviceProvider) 15 internal CompileContext(IServiceProvider serviceProvider)
16 { 16 {
17 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
18 } 18 }
19 19
20 public IWixToolsetServiceProvider ServiceProvider { get; } 20 public IServiceProvider ServiceProvider { get; }
21 21
22 public string CompilationId { get; set; } 22 public string CompilationId { get; set; }
23 23
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index 2aa25141..22f0df8f 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -57,7 +57,7 @@ namespace WixToolset.Core
57 Icon, 57 Icon,
58 } 58 }
59 59
60 internal Compiler(IWixToolsetServiceProvider serviceProvider) 60 internal Compiler(IServiceProvider serviceProvider)
61 { 61 {
62 this.Messaging = serviceProvider.GetService<IMessaging>(); 62 this.Messaging = serviceProvider.GetService<IMessaging>();
63 } 63 }
@@ -4298,9 +4298,9 @@ namespace WixToolset.Core
4298 } 4298 }
4299 } 4299 }
4300 else if ("TARGETDIR".Equals(id.Id, StringComparison.Ordinal) && !("SourceDir".Equals(name, StringComparison.Ordinal) && shortName == null && shortSourceName == null && sourceName == null)) 4300 else if ("TARGETDIR".Equals(id.Id, StringComparison.Ordinal) && !("SourceDir".Equals(name, StringComparison.Ordinal) && shortName == null && shortSourceName == null && sourceName == null))
4301 { 4301 {
4302 this.Core.Write(ErrorMessages.IllegalTargetDirDefaultDir(sourceLineNumbers, name)); 4302 this.Core.Write(ErrorMessages.IllegalTargetDirDefaultDir(sourceLineNumbers, name));
4303 } 4303 }
4304 4304
4305 // Update the file source path appropriately. 4305 // Update the file source path appropriately.
4306 if (fileSourceAttribSet) 4306 if (fileSourceAttribSet)
diff --git a/src/WixToolset.Core/DecompileContext.cs b/src/WixToolset.Core/DecompileContext.cs
index fb59cd08..056785d6 100644
--- a/src/WixToolset.Core/DecompileContext.cs
+++ b/src/WixToolset.Core/DecompileContext.cs
@@ -11,12 +11,12 @@ namespace WixToolset.Core
11 11
12 internal class DecompileContext : IDecompileContext 12 internal class DecompileContext : IDecompileContext
13 { 13 {
14 internal DecompileContext(IWixToolsetServiceProvider serviceProvider) 14 internal DecompileContext(IServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
18 18
19 public IWixToolsetServiceProvider ServiceProvider { get; } 19 public IServiceProvider ServiceProvider { get; }
20 20
21 public string DecompilePath { get; set; } 21 public string DecompilePath { get; set; }
22 22
diff --git a/src/WixToolset.Core/Decompiler.cs b/src/WixToolset.Core/Decompiler.cs
index e146362f..859f582b 100644
--- a/src/WixToolset.Core/Decompiler.cs
+++ b/src/WixToolset.Core/Decompiler.cs
@@ -12,12 +12,12 @@ namespace WixToolset.Core
12 /// </summary> 12 /// </summary>
13 internal class Decompiler : IDecompiler 13 internal class Decompiler : IDecompiler
14 { 14 {
15 internal Decompiler(IWixToolsetServiceProvider serviceProvider) 15 internal Decompiler(IServiceProvider serviceProvider)
16 { 16 {
17 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
18 } 18 }
19 19
20 public IWixToolsetServiceProvider ServiceProvider { get; } 20 public IServiceProvider ServiceProvider { get; }
21 21
22 public IDecompileResult Decompile(IDecompileContext context) 22 public IDecompileResult Decompile(IDecompileContext context)
23 { 23 {
diff --git a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
index 3dcc0ce9..539cec78 100644
--- a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.ExtensibilityServices
16 { 16 {
17 private static readonly string[] ReservedFileNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; 17 private static readonly string[] ReservedFileNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" };
18 18
19 public BackendHelper(IWixToolsetServiceProvider serviceProvider) 19 public BackendHelper(IServiceProvider serviceProvider)
20 { 20 {
21 this.Messaging = serviceProvider.GetService<IMessaging>(); 21 this.Messaging = serviceProvider.GetService<IMessaging>();
22 } 22 }
diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
index 3c040b35..8e9f48c4 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
@@ -18,14 +18,14 @@ namespace WixToolset.Core.ExtensibilityServices
18 { 18 {
19 private static readonly char[] InlineDirectorySeparators = new char[] { ':', '\\', '/' }; 19 private static readonly char[] InlineDirectorySeparators = new char[] { ':', '\\', '/' };
20 20
21 public ParseHelper(IWixToolsetServiceProvider serviceProvider) 21 public ParseHelper(IServiceProvider serviceProvider)
22 { 22 {
23 this.ServiceProvider = serviceProvider; 23 this.ServiceProvider = serviceProvider;
24 24
25 this.Messaging = serviceProvider.GetService<IMessaging>(); 25 this.Messaging = serviceProvider.GetService<IMessaging>();
26 } 26 }
27 27
28 private IWixToolsetServiceProvider ServiceProvider { get; } 28 private IServiceProvider ServiceProvider { get; }
29 29
30 private IMessaging Messaging { get; } 30 private IMessaging Messaging { get; }
31 31
diff --git a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
index 041c7d5d..b0c87bcf 100644
--- a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
@@ -17,14 +17,14 @@ namespace WixToolset.Core.ExtensibilityServices
17 private static readonly char[] VariableSplitter = new char[] { '.' }; 17 private static readonly char[] VariableSplitter = new char[] { '.' };
18 private static readonly char[] ArgumentSplitter = new char[] { ',' }; 18 private static readonly char[] ArgumentSplitter = new char[] { ',' };
19 19
20 public PreprocessHelper(IWixToolsetServiceProvider serviceProvider) 20 public PreprocessHelper(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
24 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 24 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
25 } 25 }
26 26
27 private IWixToolsetServiceProvider ServiceProvider { get; } 27 private IServiceProvider ServiceProvider { get; }
28 28
29 private IMessaging Messaging { get; } 29 private IMessaging Messaging { get; }
30 30
@@ -133,7 +133,7 @@ namespace WixToolset.Core.ExtensibilityServices
133 } 133 }
134 134
135 default: 135 default:
136 var extensionsByPrefix = this.GetExtensionsByPrefix(context); 136 var extensionsByPrefix = this.GetExtensionsByPrefix();
137 if (extensionsByPrefix.TryGetValue(prefix, out var extension)) 137 if (extensionsByPrefix.TryGetValue(prefix, out var extension))
138 { 138 {
139 try 139 try
@@ -259,7 +259,7 @@ namespace WixToolset.Core.ExtensibilityServices
259 return context.Variables.TryGetValue(name, out var result) ? result : null; 259 return context.Variables.TryGetValue(name, out var result) ? result : null;
260 260
261 default: 261 default:
262 var extensionsByPrefix = this.GetExtensionsByPrefix(context); 262 var extensionsByPrefix = this.GetExtensionsByPrefix();
263 if (extensionsByPrefix.TryGetValue(prefix, out var extension)) 263 if (extensionsByPrefix.TryGetValue(prefix, out var extension))
264 { 264 {
265 try 265 try
@@ -309,7 +309,7 @@ namespace WixToolset.Core.ExtensibilityServices
309 break; 309 break;
310 310
311 default: 311 default:
312 var extensionsByPrefix = this.GetExtensionsByPrefix(context); 312 var extensionsByPrefix = this.GetExtensionsByPrefix();
313 if (extensionsByPrefix.TryGetValue(prefix, out var extension)) 313 if (extensionsByPrefix.TryGetValue(prefix, out var extension))
314 { 314 {
315 if (!extension.ProcessPragma(prefix, pragma, args, parent)) 315 if (!extension.ProcessPragma(prefix, pragma, args, parent))
@@ -468,7 +468,7 @@ namespace WixToolset.Core.ExtensibilityServices
468 } 468 }
469 } 469 }
470 470
471 private Dictionary<string, IPreprocessorExtension> GetExtensionsByPrefix(IPreprocessContext context) 471 private Dictionary<string, IPreprocessorExtension> GetExtensionsByPrefix()
472 { 472 {
473 if (this.ExtensionsByPrefix == null) 473 if (this.ExtensionsByPrefix == null)
474 { 474 {
diff --git a/src/WixToolset.Core/ExtensibilityServices/SymbolDefinitionCreator.cs b/src/WixToolset.Core/ExtensibilityServices/SymbolDefinitionCreator.cs
index 2bff21d6..a2486130 100644
--- a/src/WixToolset.Core/ExtensibilityServices/SymbolDefinitionCreator.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/SymbolDefinitionCreator.cs
@@ -10,12 +10,12 @@ namespace WixToolset.Core.ExtensibilityServices
10 10
11 internal class SymbolDefinitionCreator : ISymbolDefinitionCreator 11 internal class SymbolDefinitionCreator : ISymbolDefinitionCreator
12 { 12 {
13 public SymbolDefinitionCreator(IWixToolsetServiceProvider serviceProvider) 13 public SymbolDefinitionCreator(IServiceProvider serviceProvider)
14 { 14 {
15 this.ServiceProvider = serviceProvider; 15 this.ServiceProvider = serviceProvider;
16 } 16 }
17 17
18 private IWixToolsetServiceProvider ServiceProvider { get; } 18 private IServiceProvider ServiceProvider { get; }
19 19
20 private IEnumerable<IExtensionData> ExtensionData { get; set; } 20 private IEnumerable<IExtensionData> ExtensionData { get; set; }
21 21
diff --git a/src/WixToolset.Core/IncribeContext.cs b/src/WixToolset.Core/IncribeContext.cs
index 8db4daef..9d7055ab 100644
--- a/src/WixToolset.Core/IncribeContext.cs
+++ b/src/WixToolset.Core/IncribeContext.cs
@@ -8,12 +8,12 @@ namespace WixToolset.Core
8 8
9 internal class InscribeContext : IInscribeContext 9 internal class InscribeContext : IInscribeContext
10 { 10 {
11 public InscribeContext(IWixToolsetServiceProvider serviceProvider) 11 public InscribeContext(IServiceProvider serviceProvider)
12 { 12 {
13 this.ServiceProvider = serviceProvider; 13 this.ServiceProvider = serviceProvider;
14 } 14 }
15 15
16 public IWixToolsetServiceProvider ServiceProvider { get; } 16 public IServiceProvider ServiceProvider { get; }
17 17
18 public string IntermediateFolder { get; set; } 18 public string IntermediateFolder { get; set; }
19 19
diff --git a/src/WixToolset.Core/LayoutContext.cs b/src/WixToolset.Core/LayoutContext.cs
index 7bbae0c0..e4c8db7c 100644
--- a/src/WixToolset.Core/LayoutContext.cs
+++ b/src/WixToolset.Core/LayoutContext.cs
@@ -2,20 +2,20 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services;
10 10
11 internal class LayoutContext : ILayoutContext 11 internal class LayoutContext : ILayoutContext
12 { 12 {
13 internal LayoutContext(IWixToolsetServiceProvider serviceProvider) 13 internal LayoutContext(IServiceProvider serviceProvider)
14 { 14 {
15 this.ServiceProvider = serviceProvider; 15 this.ServiceProvider = serviceProvider;
16 } 16 }
17 17
18 public IWixToolsetServiceProvider ServiceProvider { get; } 18 public IServiceProvider ServiceProvider { get; }
19 19
20 public IEnumerable<ILayoutExtension> Extensions { get; set; } 20 public IEnumerable<ILayoutExtension> Extensions { get; set; }
21 21
diff --git a/src/WixToolset.Core/LayoutCreator.cs b/src/WixToolset.Core/LayoutCreator.cs
index 0da18ab5..b31c4e16 100644
--- a/src/WixToolset.Core/LayoutCreator.cs
+++ b/src/WixToolset.Core/LayoutCreator.cs
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary> 16 /// </summary>
17 internal class LayoutCreator : ILayoutCreator 17 internal class LayoutCreator : ILayoutCreator
18 { 18 {
19 internal LayoutCreator(IWixToolsetServiceProvider serviceProvider) 19 internal LayoutCreator(IServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 22
23 this.Messaging = serviceProvider.GetService<IMessaging>(); 23 this.Messaging = serviceProvider.GetService<IMessaging>();
24 } 24 }
25 25
26 private IWixToolsetServiceProvider ServiceProvider { get; } 26 private IServiceProvider ServiceProvider { get; }
27 27
28 private IMessaging Messaging { get; } 28 private IMessaging Messaging { get; }
29 29
diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs
index 6dc8611d..059a478b 100644
--- a/src/WixToolset.Core/Librarian.cs
+++ b/src/WixToolset.Core/Librarian.cs
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary> 16 /// </summary>
17 internal class Librarian : ILibrarian 17 internal class Librarian : ILibrarian
18 { 18 {
19 internal Librarian(IWixToolsetServiceProvider serviceProvider) 19 internal Librarian(IServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 22
23 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 23 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
24 } 24 }
25 25
26 private IWixToolsetServiceProvider ServiceProvider { get; } 26 private IServiceProvider ServiceProvider { get; }
27 27
28 private IMessaging Messaging { get; } 28 private IMessaging Messaging { get; }
29 29
diff --git a/src/WixToolset.Core/LibraryContext.cs b/src/WixToolset.Core/LibraryContext.cs
index 9fd76cf5..62d4e70c 100644
--- a/src/WixToolset.Core/LibraryContext.cs
+++ b/src/WixToolset.Core/LibraryContext.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
@@ -11,12 +12,12 @@ namespace WixToolset.Core
11 12
12 internal class LibraryContext : ILibraryContext 13 internal class LibraryContext : ILibraryContext
13 { 14 {
14 internal LibraryContext(IWixToolsetServiceProvider serviceProvider) 15 internal LibraryContext(IServiceProvider serviceProvider)
15 { 16 {
16 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
17 } 18 }
18 19
19 public IWixToolsetServiceProvider ServiceProvider { get; } 20 public IServiceProvider ServiceProvider { get; }
20 21
21 public IMessaging Messaging { get; set; } 22 public IMessaging Messaging { get; set; }
22 23
diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs
index 2f5ecf59..528d0f0f 100644
--- a/src/WixToolset.Core/LinkContext.cs
+++ b/src/WixToolset.Core/LinkContext.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
@@ -11,12 +12,12 @@ namespace WixToolset.Core
11 12
12 internal class LinkContext : ILinkContext 13 internal class LinkContext : ILinkContext
13 { 14 {
14 internal LinkContext(IWixToolsetServiceProvider serviceProvider) 15 internal LinkContext(IServiceProvider serviceProvider)
15 { 16 {
16 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
17 } 18 }
18 19
19 public IWixToolsetServiceProvider ServiceProvider { get; } 20 public IServiceProvider ServiceProvider { get; }
20 21
21 public IEnumerable<ILinkerExtension> Extensions { get; set; } 22 public IEnumerable<ILinkerExtension> Extensions { get; set; }
22 23
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index f5461bbc..d5c51f96 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -27,14 +27,14 @@ namespace WixToolset.Core
27 /// <summary> 27 /// <summary>
28 /// Creates a linker. 28 /// Creates a linker.
29 /// </summary> 29 /// </summary>
30 internal Linker(IWixToolsetServiceProvider serviceProvider) 30 internal Linker(IServiceProvider serviceProvider)
31 { 31 {
32 this.ServiceProvider = serviceProvider; 32 this.ServiceProvider = serviceProvider;
33 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 33 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
34 this.sectionIdOnRows = true; // TODO: what is the correct value for this? 34 this.sectionIdOnRows = true; // TODO: what is the correct value for this?
35 } 35 }
36 36
37 private IWixToolsetServiceProvider ServiceProvider { get; } 37 private IServiceProvider ServiceProvider { get; }
38 38
39 private IMessaging Messaging { get; } 39 private IMessaging Messaging { get; }
40 40
diff --git a/src/WixToolset.Core/LocalizationParser.cs b/src/WixToolset.Core/LocalizationParser.cs
index aaf4c425..dd5144ca 100644
--- a/src/WixToolset.Core/LocalizationParser.cs
+++ b/src/WixToolset.Core/LocalizationParser.cs
@@ -15,7 +15,7 @@ namespace WixToolset.Core
15 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; 15 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
16 private const string XmlElementName = "WixLocalization"; 16 private const string XmlElementName = "WixLocalization";
17 17
18 internal LocalizationParser(IWixToolsetServiceProvider serviceProvider) 18 internal LocalizationParser(IServiceProvider serviceProvider)
19 { 19 {
20 this.Messaging = serviceProvider.GetService<IMessaging>(); 20 this.Messaging = serviceProvider.GetService<IMessaging>();
21 } 21 }
diff --git a/src/WixToolset.Core/PreprocessContext.cs b/src/WixToolset.Core/PreprocessContext.cs
index d273d76b..0b735a7c 100644
--- a/src/WixToolset.Core/PreprocessContext.cs
+++ b/src/WixToolset.Core/PreprocessContext.cs
@@ -2,21 +2,21 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
11 11
12 internal class PreprocessContext : IPreprocessContext 12 internal class PreprocessContext : IPreprocessContext
13 { 13 {
14 internal PreprocessContext(IWixToolsetServiceProvider serviceProvider) 14 internal PreprocessContext(IServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
18 18
19 public IWixToolsetServiceProvider ServiceProvider { get; } 19 public IServiceProvider ServiceProvider { get; }
20 20
21 public IEnumerable<IPreprocessorExtension> Extensions { get; set; } 21 public IEnumerable<IPreprocessorExtension> Extensions { get; set; }
22 22
diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs
index 81b17578..603c0e5b 100644
--- a/src/WixToolset.Core/Preprocessor.cs
+++ b/src/WixToolset.Core/Preprocessor.cs
@@ -37,14 +37,14 @@ namespace WixToolset.Core
37 XmlResolver = null, 37 XmlResolver = null,
38 }; 38 };
39 39
40 internal Preprocessor(IWixToolsetServiceProvider serviceProvider) 40 internal Preprocessor(IServiceProvider serviceProvider)
41 { 41 {
42 this.ServiceProvider = serviceProvider; 42 this.ServiceProvider = serviceProvider;
43 43
44 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 44 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
45 } 45 }
46 46
47 private IWixToolsetServiceProvider ServiceProvider { get; } 47 private IServiceProvider ServiceProvider { get; }
48 48
49 private IMessaging Messaging { get; } 49 private IMessaging Messaging { get; }
50 50
@@ -1489,7 +1489,7 @@ namespace WixToolset.Core
1489 1489
1490 private class ProcessingState 1490 private class ProcessingState
1491 { 1491 {
1492 public ProcessingState(IWixToolsetServiceProvider serviceProvider, IPreprocessContext context) 1492 public ProcessingState(IServiceProvider serviceProvider, IPreprocessContext context)
1493 { 1493 {
1494 var path = Path.GetFullPath(context.SourcePath); 1494 var path = Path.GetFullPath(context.SourcePath);
1495 1495
diff --git a/src/WixToolset.Core/ResolveContext.cs b/src/WixToolset.Core/ResolveContext.cs
index 6e1718b6..185b556c 100644
--- a/src/WixToolset.Core/ResolveContext.cs
+++ b/src/WixToolset.Core/ResolveContext.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
@@ -11,12 +12,12 @@ namespace WixToolset.Core
11 12
12 internal class ResolveContext : IResolveContext 13 internal class ResolveContext : IResolveContext
13 { 14 {
14 internal ResolveContext(IWixToolsetServiceProvider serviceProvider) 15 internal ResolveContext(IServiceProvider serviceProvider)
15 { 16 {
16 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
17 } 18 }
18 19
19 public IWixToolsetServiceProvider ServiceProvider { get; } 20 public IServiceProvider ServiceProvider { get; }
20 21
21 public IEnumerable<IBindPath> BindPaths { get; set; } 22 public IEnumerable<IBindPath> BindPaths { get; set; }
22 23
diff --git a/src/WixToolset.Core/Resolver.cs b/src/WixToolset.Core/Resolver.cs
index 4f12ae76..92c2a9c9 100644
--- a/src/WixToolset.Core/Resolver.cs
+++ b/src/WixToolset.Core/Resolver.cs
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17 /// </summary> 17 /// </summary>
18 internal class Resolver : IResolver 18 internal class Resolver : IResolver
19 { 19 {
20 internal Resolver(IWixToolsetServiceProvider serviceProvider) 20 internal Resolver(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
@@ -26,7 +26,7 @@ namespace WixToolset.Core
26 this.VariableResolver = serviceProvider.GetService<IVariableResolver>(); 26 this.VariableResolver = serviceProvider.GetService<IVariableResolver>();
27 } 27 }
28 28
29 private IWixToolsetServiceProvider ServiceProvider { get; } 29 private IServiceProvider ServiceProvider { get; }
30 30
31 private IMessaging Messaging { get; } 31 private IMessaging Messaging { get; }
32 32
diff --git a/src/WixToolset.Core/UnbindContext.cs b/src/WixToolset.Core/UnbindContext.cs
index acfb8f1e..c3817a08 100644
--- a/src/WixToolset.Core/UnbindContext.cs
+++ b/src/WixToolset.Core/UnbindContext.cs
@@ -2,17 +2,17 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
6 using WixToolset.Extensibility.Services;
7 7
8 internal class UnbindContext : IUnbindContext 8 internal class UnbindContext : IUnbindContext
9 { 9 {
10 internal UnbindContext(IWixToolsetServiceProvider serviceProvider) 10 internal UnbindContext(IServiceProvider serviceProvider)
11 { 11 {
12 this.ServiceProvider = serviceProvider; 12 this.ServiceProvider = serviceProvider;
13 } 13 }
14 14
15 public IWixToolsetServiceProvider ServiceProvider { get; } 15 public IServiceProvider ServiceProvider { get; }
16 16
17 public string ExportBasePath { get; set; } 17 public string ExportBasePath { get; set; }
18 18
diff --git a/src/WixToolset.Core/Unbinder.cs b/src/WixToolset.Core/Unbinder.cs
index f712ec3f..3ef77083 100644
--- a/src/WixToolset.Core/Unbinder.cs
+++ b/src/WixToolset.Core/Unbinder.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.IO; 7 using System.IO;
7 using WixToolset.Data; 8 using WixToolset.Data;
@@ -13,7 +14,7 @@ namespace WixToolset.Core
13 /// </summary> 14 /// </summary>
14 internal sealed class Unbinder : IUnbinder 15 internal sealed class Unbinder : IUnbinder
15 { 16 {
16 public Unbinder(IWixToolsetServiceProvider serviceProvider) 17 public Unbinder(IServiceProvider serviceProvider)
17 { 18 {
18 this.ServiceProvider = serviceProvider; 19 this.ServiceProvider = serviceProvider;
19 20
@@ -21,7 +22,7 @@ namespace WixToolset.Core
21 this.BackendFactories = extensionManager.GetServices<IBackendFactory>(); 22 this.BackendFactories = extensionManager.GetServices<IBackendFactory>();
22 } 23 }
23 24
24 public IWixToolsetServiceProvider ServiceProvider { get; } 25 public IServiceProvider ServiceProvider { get; }
25 26
26 public IEnumerable<IBackendFactory> BackendFactories { get; } 27 public IEnumerable<IBackendFactory> BackendFactories { get; }
27 28
diff --git a/src/WixToolset.Core/VariableResolver.cs b/src/WixToolset.Core/VariableResolver.cs
index 140e7def..437cabb7 100644
--- a/src/WixToolset.Core/VariableResolver.cs
+++ b/src/WixToolset.Core/VariableResolver.cs
@@ -21,7 +21,7 @@ namespace WixToolset.Core
21 /// <summary> 21 /// <summary>
22 /// Instantiate a new VariableResolver. 22 /// Instantiate a new VariableResolver.
23 /// </summary> 23 /// </summary>
24 internal VariableResolver(IWixToolsetServiceProvider serviceProvider) 24 internal VariableResolver(IServiceProvider serviceProvider)
25 { 25 {
26 this.ServiceProvider = serviceProvider; 26 this.ServiceProvider = serviceProvider;
27 this.Messaging = serviceProvider.GetService<IMessaging>(); 27 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -31,7 +31,7 @@ namespace WixToolset.Core
31 this.localizedControls = new Dictionary<string, LocalizedControl>(); 31 this.localizedControls = new Dictionary<string, LocalizedControl>();
32 } 32 }
33 33
34 private IWixToolsetServiceProvider ServiceProvider { get; } 34 private IServiceProvider ServiceProvider { get; }
35 35
36 private IMessaging Messaging { get; } 36 private IMessaging Messaging { get; }
37 37
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index 87a6f76b..5d700ba0 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -73,14 +73,14 @@ namespace WixToolset.Core
73 73
74 private Dictionary<Type, object> Singletons { get; } 74 private Dictionary<Type, object> Singletons { get; }
75 75
76 public bool TryGetService(Type serviceType, out object service) 76 public object GetService(Type serviceType)
77 { 77 {
78 if (serviceType == null) 78 if (serviceType == null)
79 { 79 {
80 throw new ArgumentNullException(nameof(serviceType)); 80 throw new ArgumentNullException(nameof(serviceType));
81 } 81 }
82 82
83 if (!this.Singletons.TryGetValue(serviceType, out service)) 83 if (!this.Singletons.TryGetValue(serviceType, out var service))
84 { 84 {
85 if (this.CreationFunctions.TryGetValue(serviceType, out var creationFunction)) 85 if (this.CreationFunctions.TryGetValue(serviceType, out var creationFunction))
86 { 86 {
@@ -95,24 +95,7 @@ namespace WixToolset.Core
95 } 95 }
96 } 96 }
97 97
98 return service != null; 98 return service;
99 }
100
101 public bool TryGetService<T>(out T service) where T : class
102 {
103 var success = this.TryGetService(typeof(T), out var untypedService);
104 service = (T)untypedService;
105 return success;
106 }
107
108 public object GetService(Type serviceType)
109 {
110 return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));
111 }
112
113 public T GetService<T>() where T : class
114 {
115 return (T)this.GetService(typeof(T));
116 } 99 }
117 100
118 public void AddService(Type serviceType, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object> creationFunction) 101 public void AddService(Type serviceType, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object> creationFunction)