diff options
-rw-r--r-- | src/WixToolset.Core/WixToolsetServiceProvider.cs | 11 |
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) |