aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index 0c40c56d..20c6c309 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -43,11 +43,11 @@ namespace WixToolset.Core
43 43
44 private Dictionary<Type, object> Singletons { get; } 44 private Dictionary<Type, object> Singletons { get; }
45 45
46 public object GetService(Type serviceType) 46 public bool TryGetService(Type serviceType, out object service)
47 { 47 {
48 if (serviceType == null) throw new ArgumentNullException(nameof(serviceType)); 48 if (serviceType == null) throw new ArgumentNullException(nameof(serviceType));
49 49
50 if (!this.Singletons.TryGetValue(serviceType, out var service)) 50 if (!this.Singletons.TryGetValue(serviceType, out service))
51 { 51 {
52 if (this.CreationFunctions.TryGetValue(serviceType, out var creationFunction)) 52 if (this.CreationFunctions.TryGetValue(serviceType, out var creationFunction))
53 { 53 {
@@ -62,7 +62,12 @@ namespace WixToolset.Core
62 } 62 }
63 } 63 }
64 64
65 return service ?? throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType)); 65 return service != null;
66 }
67
68 public object GetService(Type serviceType)
69 {
70 return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));
66 } 71 }
67 72
68 public void AddService(Type serviceType, Func<IServiceProvider, Dictionary<Type, object>, object> creationFunction) 73 public void AddService(Type serviceType, Func<IServiceProvider, Dictionary<Type, object>, object> creationFunction)