aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-04-02 21:00:43 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-04-02 21:34:24 +1000
commit7027e259b8987e425362ee8248e5d0efe8003d51 (patch)
tree7745b9055aecb9817bfa51576c81dd7efc38c019 /src/WixToolset.Core
parent177784c9a6d93eeb3c195e6d62b97eb4c1dde32b (diff)
downloadwix-7027e259b8987e425362ee8248e5d0efe8003d51.tar.gz
wix-7027e259b8987e425362ee8248e5d0efe8003d51.tar.bz2
wix-7027e259b8987e425362ee8248e5d0efe8003d51.zip
Hide the concrete implementation of the service provider interfaces
by adding WixToolsetServiceProviderFactory. This forces consumers to code to the interfaces.
Diffstat (limited to 'src/WixToolset.Core')
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs6
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs2
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProviderFactory.cs14
3 files changed, 18 insertions, 4 deletions
diff --git a/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs b/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
index d80f25a2..97216479 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
@@ -16,12 +16,12 @@ namespace WixToolset.Core.ExtensibilityServices
16 private List<IExtensionFactory> extensionFactories = new List<IExtensionFactory>(); 16 private List<IExtensionFactory> extensionFactories = new List<IExtensionFactory>();
17 private Dictionary<Type, List<object>> loadedExtensionsByType = new Dictionary<Type, List<object>>(); 17 private Dictionary<Type, List<object>> loadedExtensionsByType = new Dictionary<Type, List<object>>();
18 18
19 public ExtensionManager(IServiceProvider serviceProvider) 19 public ExtensionManager(IWixToolsetCoreServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 } 22 }
23 23
24 private IServiceProvider ServiceProvider { get; } 24 private IWixToolsetCoreServiceProvider ServiceProvider { get; }
25 25
26 public void Add(Assembly extensionAssembly) 26 public void Add(Assembly extensionAssembly)
27 { 27 {
@@ -33,7 +33,7 @@ namespace WixToolset.Core.ExtensibilityServices
33 33
34 private IExtensionFactory CreateExtensionFactory(Type type) 34 private IExtensionFactory CreateExtensionFactory(Type type)
35 { 35 {
36 var constructor = type.GetConstructor(new[] { typeof(IServiceProvider) }); 36 var constructor = type.GetConstructor(new[] { typeof(IWixToolsetCoreServiceProvider) });
37 if (constructor != null) 37 if (constructor != null)
38 { 38 {
39 return (IExtensionFactory)constructor.Invoke(new[] { this.ServiceProvider }); 39 return (IExtensionFactory)constructor.Invoke(new[] { this.ServiceProvider });
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index 68def7a8..2cd097a4 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Core
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
12 12
13 public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider 13 internal class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider
14 { 14 {
15 public WixToolsetServiceProvider() 15 public WixToolsetServiceProvider()
16 { 16 {
diff --git a/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
new file mode 100644
index 00000000..51e7a447
--- /dev/null
+++ b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
@@ -0,0 +1,14 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Core
4{
5 using WixToolset.Extensibility.Services;
6
7 public static class WixToolsetServiceProviderFactory
8 {
9 public static IWixToolsetCoreServiceProvider CreateServiceProvider()
10 {
11 return new WixToolsetServiceProvider();
12 }
13 }
14}