aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/WixToolsetServiceProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/WixToolsetServiceProvider.cs')
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index c073c32b..dd49e7ed 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -3,18 +3,30 @@
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System; 5 using System;
6 using WixToolset.Data;
6 using WixToolset.Extensibility; 7 using WixToolset.Extensibility;
7 using WixToolset.Extensibility.Services; 8 using WixToolset.Extensibility.Services;
8 9
9 public class WixToolsetServiceProvider : IServiceProvider 10 public class WixToolsetServiceProvider : IServiceProvider
10 { 11 {
11 private ExtensionManager extensionManager; 12 private ExtensionManager extensionManager;
13 private TupleDefinitionCreator tupleDefinitionCreator;
12 14
13 public object GetService(Type serviceType) 15 public object GetService(Type serviceType)
14 { 16 {
15 if (serviceType == null) throw new ArgumentNullException(nameof(serviceType)); 17 if (serviceType == null) throw new ArgumentNullException(nameof(serviceType));
16 18
17 // Transients. 19 // Transients.
20 if (serviceType == typeof(ICompileContext))
21 {
22 return new CompileContext(this);
23 }
24
25 if (serviceType == typeof(ILinkContext))
26 {
27 return new LinkContext(this);
28 }
29
18 if (serviceType == typeof(IBindContext)) 30 if (serviceType == typeof(IBindContext))
19 { 31 {
20 return new BindContext(this); 32 return new BindContext(this);
@@ -38,7 +50,12 @@ namespace WixToolset.Core
38 // Singletons. 50 // Singletons.
39 if (serviceType == typeof(IExtensionManager)) 51 if (serviceType == typeof(IExtensionManager))
40 { 52 {
41 return extensionManager = extensionManager ?? new ExtensionManager(); 53 return this.extensionManager = this.extensionManager ?? new ExtensionManager();
54 }
55
56 if (serviceType == typeof(ITupleDefinitionCreator))
57 {
58 return this.tupleDefinitionCreator = this.tupleDefinitionCreator ?? new TupleDefinitionCreator(this);
42 } 59 }
43 60
44 throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType)); 61 throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));