From 7027e259b8987e425362ee8248e5d0efe8003d51 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 2 Apr 2020 21:00:43 +1000 Subject: Hide the concrete implementation of the service provider interfaces by adding WixToolsetServiceProviderFactory. This forces consumers to code to the interfaces. --- .../ExtensibilityServices/ExtensionManager.cs | 6 +++--- src/WixToolset.Core/WixToolsetServiceProvider.cs | 2 +- src/WixToolset.Core/WixToolsetServiceProviderFactory.cs | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 src/WixToolset.Core/WixToolsetServiceProviderFactory.cs (limited to 'src/WixToolset.Core') 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 private List extensionFactories = new List(); private Dictionary> loadedExtensionsByType = new Dictionary>(); - public ExtensionManager(IServiceProvider serviceProvider) + public ExtensionManager(IWixToolsetCoreServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetCoreServiceProvider ServiceProvider { get; } public void Add(Assembly extensionAssembly) { @@ -33,7 +33,7 @@ namespace WixToolset.Core.ExtensibilityServices private IExtensionFactory CreateExtensionFactory(Type type) { - var constructor = type.GetConstructor(new[] { typeof(IServiceProvider) }); + var constructor = type.GetConstructor(new[] { typeof(IWixToolsetCoreServiceProvider) }); if (constructor != null) { 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 using WixToolset.Extensibility.Data; using WixToolset.Extensibility.Services; - public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider + internal class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider { public WixToolsetServiceProvider() { 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 @@ +// 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. + +namespace WixToolset.Core +{ + using WixToolset.Extensibility.Services; + + public static class WixToolsetServiceProviderFactory + { + public static IWixToolsetCoreServiceProvider CreateServiceProvider() + { + return new WixToolsetServiceProvider(); + } + } +} -- cgit v1.2.3-55-g6feb