From 177784c9a6d93eeb3c195e6d62b97eb4c1dde32b Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 2 Apr 2020 20:45:40 +1000 Subject: Use IWixToolsetServiceProvider and IWixToolsetCoreServiceProvider to expose the more convenient methods from WixToolsetServiceProvider without requiring casting or extension methods. --- src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs | 2 +- .../Bundles/ProcessMsiPackageCommand.cs | 2 +- .../Bundles/ProcessPayloadsCommand.cs | 2 +- src/WixToolset.Core.TestPackage/WixRunner.cs | 4 ++-- .../Bind/BindDatabaseCommand.cs | 2 +- .../Bind/CabinetResolver.cs | 4 ++-- .../Bind/CreateCabinetsCommand.cs | 4 ++-- .../UnbindContext.cs | 10 +++++++-- src/WixToolset.Core.WindowsInstaller/Unbinder.cs | 8 +++++--- src/WixToolset.Core/BindContext.cs | 5 +++-- src/WixToolset.Core/Binder.cs | 4 ++-- src/WixToolset.Core/CommandLine/BuildCommand.cs | 8 ++++---- src/WixToolset.Core/CommandLine/CommandLine.cs | 4 ++-- .../CommandLine/CommandLineArguments.cs | 8 ++++---- .../CommandLine/CommandLineContext.cs | 6 +++--- src/WixToolset.Core/CommandLine/CompileCommand.cs | 6 +++--- .../CommandLine/DecompileCommand.cs | 4 ++-- src/WixToolset.Core/CompileContext.cs | 7 ++++--- src/WixToolset.Core/Compiler.cs | 4 ++-- src/WixToolset.Core/DecompileContext.cs | 5 +++-- src/WixToolset.Core/Decompiler.cs | 4 ++-- .../ExtensibilityServices/BackendHelper.cs | 2 +- .../ExtensibilityServices/ParseHelper.cs | 6 +++--- .../ExtensibilityServices/PreprocessHelper.cs | 4 ++-- .../TupleDefinitionCreator.cs | 6 +++--- src/WixToolset.Core/IncribeContext.cs | 6 +++--- src/WixToolset.Core/LayoutContext.cs | 7 ++++--- src/WixToolset.Core/LayoutCreator.cs | 4 ++-- src/WixToolset.Core/Librarian.cs | 4 ++-- src/WixToolset.Core/LibraryContext.cs | 4 ++-- src/WixToolset.Core/LinkContext.cs | 7 ++++--- src/WixToolset.Core/Linker.cs | 4 ++-- src/WixToolset.Core/LocalizationParser.cs | 2 +- src/WixToolset.Core/PreprocessContext.cs | 5 +++-- src/WixToolset.Core/Preprocessor.cs | 6 +++--- src/WixToolset.Core/ResolveContext.cs | 4 ++-- src/WixToolset.Core/Resolver.cs | 4 ++-- src/WixToolset.Core/VariableResolver.cs | 4 ++-- src/WixToolset.Core/WixToolsetServiceProvider.cs | 24 +++++++++++++++++----- .../PreprocessorFixture.cs | 4 ++-- 40 files changed, 119 insertions(+), 91 deletions(-) (limited to 'src') diff --git a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs index 2cb5ed64..c9917073 100644 --- a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs +++ b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs @@ -44,7 +44,7 @@ namespace WixToolset.Core.Burn this.BackendExtensions = backedExtensions; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs index 7e65a9cf..d800a19a 100644 --- a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs +++ b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs @@ -23,7 +23,7 @@ namespace WixToolset.Core.Burn.Bundles { private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'"; - public ProcessMsiPackageCommand(IServiceProvider serviceProvider, IEnumerable backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary payloadTuples) + public ProcessMsiPackageCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary payloadTuples) { this.Messaging = serviceProvider.GetService(); this.BackendHelper = serviceProvider.GetService(); diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs index 17251143..99e361aa 100644 --- a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs +++ b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs @@ -19,7 +19,7 @@ namespace WixToolset.Core.Burn.Bundles { private static readonly Version EmptyVersion = new Version(0, 0, 0, 0); - public ProcessPayloadsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable payloads, PackagingType defaultPackaging, string layoutDirectory) + public ProcessPayloadsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable payloads, PackagingType defaultPackaging, string layoutDirectory) { this.Messaging = serviceProvider.GetService(); diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs index d2202328..39c4d2f7 100644 --- a/src/WixToolset.Core.TestPackage/WixRunner.cs +++ b/src/WixToolset.Core.TestPackage/WixRunner.cs @@ -23,7 +23,7 @@ namespace WixToolset.Core.TestPackage return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() }; } - public static int Execute(string[] args, IServiceProvider serviceProvider, out List messages) + public static int Execute(string[] args, IWixToolsetServiceProvider serviceProvider, out List messages) { var listener = new TestMessageListener(); @@ -42,7 +42,7 @@ namespace WixToolset.Core.TestPackage return command?.Execute() ?? 1; } - private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions) + private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, string[] extensions) { var extensionManager = serviceProvider.GetService(); diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index 6878aed5..2ced48ea 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs @@ -54,7 +54,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.BackendExtensions = backendExtension; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs index 79b1c619..189c5f01 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs @@ -15,7 +15,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind public class CabinetResolver { - public CabinetResolver(IServiceProvider serviceProvider, string cabCachePath, IEnumerable backendExtensions) + public CabinetResolver(IWixToolsetServiceProvider serviceProvider, string cabCachePath, IEnumerable backendExtensions) { this.ServiceProvider = serviceProvider; @@ -24,7 +24,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.BackendExtensions = backendExtensions; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private string CabCachePath { get; } diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs index 50dc7e3f..2536eeac 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs @@ -33,7 +33,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind private Dictionary lastCabinetAddedToMediaTable; // Key is First Cabinet Name, Value is Last Cabinet Added in the Split Sequence - public CreateCabinetsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper) + public CreateCabinetsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper) { this.fileTransfers = new List(); @@ -46,7 +46,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.BackendHelper = backendHelper; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IBackendHelper BackendHelper { get; } diff --git a/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs b/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs index 2bc4516d..f60a0e1a 100644 --- a/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs +++ b/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs @@ -1,13 +1,19 @@ -// 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. +// 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 System; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class UnbindContext : IUnbindContext { - public IServiceProvider ServiceProvider { get; } + internal UnbindContext(IWixToolsetServiceProvider serviceProvider) + { + this.ServiceProvider = serviceProvider; + } + + public IWixToolsetServiceProvider ServiceProvider { get; } public string ExportBasePath { get; set; } diff --git a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs index e8c109d2..2ca0b557 100644 --- a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs +++ b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs @@ -2,11 +2,11 @@ namespace WixToolset.Core { - using System.Collections; + using System.Collections.Generic; using System.IO; using WixToolset.Data; using WixToolset.Extensibility; - using System.Collections.Generic; + using WixToolset.Extensibility.Services; /// /// Unbinder core of the WiX toolset. @@ -21,6 +21,8 @@ namespace WixToolset.Core /// Set to true if the input msi is part of an admin image. public bool IsAdminImage { get; set; } + public IWixToolsetServiceProvider ServiceProvider { get; } + /// /// Gets or sets the option to suppress demodularizing values. /// @@ -64,7 +66,7 @@ namespace WixToolset.Core // if we don't have the temporary files object yet, get one Directory.CreateDirectory(this.TempFilesLocation); // ensure the base path is there - var context = new UnbindContext(); + var context = new UnbindContext(this.ServiceProvider); context.InputFilePath = file; context.ExportBasePath = exportBasePath; context.IntermediateFolder = this.TempFilesLocation; diff --git a/src/WixToolset.Core/BindContext.cs b/src/WixToolset.Core/BindContext.cs index 67ce744a..1c456a9f 100644 --- a/src/WixToolset.Core/BindContext.cs +++ b/src/WixToolset.Core/BindContext.cs @@ -7,15 +7,16 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class BindContext : IBindContext { - internal BindContext(IServiceProvider serviceProvider) + internal BindContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IEnumerable BindPaths { get; set; } diff --git a/src/WixToolset.Core/Binder.cs b/src/WixToolset.Core/Binder.cs index fcf5a669..e6dd538b 100644 --- a/src/WixToolset.Core/Binder.cs +++ b/src/WixToolset.Core/Binder.cs @@ -17,12 +17,12 @@ namespace WixToolset.Core /// internal class Binder : IBinder { - internal Binder(IServiceProvider serviceProvider) + internal Binder(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IBindResult Bind(IBindContext context) { diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs index 718b3015..a59637fe 100644 --- a/src/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs @@ -16,7 +16,7 @@ namespace WixToolset.Core.CommandLine { private readonly CommandLine commandLine; - public BuildCommand(IServiceProvider serviceProvider) + public BuildCommand(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); @@ -28,7 +28,7 @@ namespace WixToolset.Core.CommandLine public bool StopParsing => this.commandLine.ShowHelp; - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } @@ -462,13 +462,13 @@ namespace WixToolset.Core.CommandLine public string BuiltOutputsFile { get; private set; } - public CommandLine(IServiceProvider serviceProvider, IMessaging messaging) + public CommandLine(IWixToolsetServiceProvider serviceProvider, IMessaging messaging) { this.ServiceProvider = serviceProvider; this.Messaging = messaging; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/CommandLine/CommandLine.cs b/src/WixToolset.Core/CommandLine/CommandLine.cs index 8e359e14..683d1f5a 100644 --- a/src/WixToolset.Core/CommandLine/CommandLine.cs +++ b/src/WixToolset.Core/CommandLine/CommandLine.cs @@ -23,14 +23,14 @@ namespace WixToolset.Core.CommandLine { private static readonly char[] BindPathSplit = { '=' }; - public CommandLine(IServiceProvider serviceProvider) + public CommandLine(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = this.ServiceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; set; } diff --git a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs index 5fa547b4..3f412611 100644 --- a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs +++ b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs @@ -1,4 +1,4 @@ -// 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. +// 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.CommandLine { @@ -20,9 +20,9 @@ namespace WixToolset.Core.CommandLine public string ErrorArgument { get; set; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } - public CommandLineArguments(IServiceProvider serviceProvider) + public CommandLineArguments(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } @@ -43,7 +43,7 @@ namespace WixToolset.Core.CommandLine public ICommandLineParser Parse() { - var messaging = (IMessaging)this.ServiceProvider.GetService(typeof(IMessaging)); + var messaging = this.ServiceProvider.GetService(); return new CommandLineParser(messaging, this.Arguments, this.ErrorArgument); } diff --git a/src/WixToolset.Core/CommandLine/CommandLineContext.cs b/src/WixToolset.Core/CommandLine/CommandLineContext.cs index ea0cf3d4..6bf05590 100644 --- a/src/WixToolset.Core/CommandLine/CommandLineContext.cs +++ b/src/WixToolset.Core/CommandLine/CommandLineContext.cs @@ -1,4 +1,4 @@ -// 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. +// 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.CommandLine { @@ -8,12 +8,12 @@ namespace WixToolset.Core.CommandLine internal class CommandLineContext : ICommandLineContext { - public CommandLineContext(IServiceProvider serviceProvider) + public CommandLineContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IExtensionManager ExtensionManager { get; set; } diff --git a/src/WixToolset.Core/CommandLine/CompileCommand.cs b/src/WixToolset.Core/CommandLine/CompileCommand.cs index 0a354a8f..67756947 100644 --- a/src/WixToolset.Core/CommandLine/CompileCommand.cs +++ b/src/WixToolset.Core/CommandLine/CompileCommand.cs @@ -12,14 +12,14 @@ namespace WixToolset.Core.CommandLine internal class CompileCommand : ICommandLineCommand { - public CompileCommand(IServiceProvider serviceProvider) + public CompileCommand(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); this.ExtensionManager = serviceProvider.GetService(); } - public CompileCommand(IServiceProvider serviceProvider, IEnumerable sources, IDictionary preprocessorVariables, Platform platform) + public CompileCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable sources, IDictionary preprocessorVariables, Platform platform) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); @@ -29,7 +29,7 @@ namespace WixToolset.Core.CommandLine this.Platform = platform; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } public IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/WixToolset.Core/CommandLine/DecompileCommand.cs index fbba3d9f..0e21a4f4 100644 --- a/src/WixToolset.Core/CommandLine/DecompileCommand.cs +++ b/src/WixToolset.Core/CommandLine/DecompileCommand.cs @@ -14,7 +14,7 @@ namespace WixToolset.Core.CommandLine { private readonly CommandLine commandLine; - public DecompileCommand(IServiceProvider serviceProvider) + public DecompileCommand(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); @@ -25,7 +25,7 @@ namespace WixToolset.Core.CommandLine public bool StopParsing => this.commandLine.ShowHelp; - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } public IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/CompileContext.cs b/src/WixToolset.Core/CompileContext.cs index c7a0905e..f92a131d 100644 --- a/src/WixToolset.Core/CompileContext.cs +++ b/src/WixToolset.Core/CompileContext.cs @@ -1,4 +1,4 @@ -// 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. +// 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 { @@ -8,15 +8,16 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class CompileContext : ICompileContext { - internal CompileContext(IServiceProvider serviceProvider) + internal CompileContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public string CompilationId { get; set; } diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 7638c11e..0eb0b1d3 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs @@ -56,14 +56,14 @@ namespace WixToolset.Core Icon, } - internal Compiler(IServiceProvider serviceProvider) + internal Compiler(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } public IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/DecompileContext.cs b/src/WixToolset.Core/DecompileContext.cs index c6902117..fb59cd08 100644 --- a/src/WixToolset.Core/DecompileContext.cs +++ b/src/WixToolset.Core/DecompileContext.cs @@ -7,15 +7,16 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class DecompileContext : IDecompileContext { - internal DecompileContext(IServiceProvider serviceProvider) + internal DecompileContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public string DecompilePath { get; set; } diff --git a/src/WixToolset.Core/Decompiler.cs b/src/WixToolset.Core/Decompiler.cs index 859f582b..e146362f 100644 --- a/src/WixToolset.Core/Decompiler.cs +++ b/src/WixToolset.Core/Decompiler.cs @@ -12,12 +12,12 @@ namespace WixToolset.Core /// internal class Decompiler : IDecompiler { - internal Decompiler(IServiceProvider serviceProvider) + internal Decompiler(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IDecompileResult Decompile(IDecompileContext context) { diff --git a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs index 0bdecf7a..e4b6e959 100644 --- a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs @@ -12,7 +12,7 @@ namespace WixToolset.Core.ExtensibilityServices { private static readonly string[] ReservedFileNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; - public BackendHelper(IServiceProvider serviceProvider) + public BackendHelper(IWixToolsetServiceProvider serviceProvider) { this.Messaging = serviceProvider.GetService(); } diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs index ed529dbb..f7c5e309 100644 --- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs @@ -33,14 +33,14 @@ namespace WixToolset.Core.ExtensibilityServices private static readonly Regex PutGuidHere = new Regex(@"PUT\-GUID\-(?:\d+\-)?HERE", RegexOptions.Singleline); - public ParseHelper(IServiceProvider serviceProvider) + public ParseHelper(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } @@ -976,7 +976,7 @@ namespace WixToolset.Core.ExtensibilityServices private void CreateTupleDefinitionCreator() { - this.Creator = (ITupleDefinitionCreator)this.ServiceProvider.GetService(typeof(ITupleDefinitionCreator)); + this.Creator = this.ServiceProvider.GetService(); } private static IntermediateTuple CreateTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, Identifier identifier) diff --git a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs index 215c7bc4..bdf11879 100644 --- a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs @@ -17,14 +17,14 @@ namespace WixToolset.Core.ExtensibilityServices private static readonly char[] VariableSplitter = new char[] { '.' }; private static readonly char[] ArgumentSplitter = new char[] { ',' }; - public PreprocessHelper(IServiceProvider serviceProvider) + public PreprocessHelper(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = this.ServiceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs index aeeeebe7..7ef72afc 100644 --- a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs +++ b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs @@ -10,12 +10,12 @@ namespace WixToolset.Core.ExtensibilityServices internal class TupleDefinitionCreator : ITupleDefinitionCreator { - public TupleDefinitionCreator(IServiceProvider serviceProvider) + public TupleDefinitionCreator(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IEnumerable ExtensionData { get; set; } @@ -62,7 +62,7 @@ namespace WixToolset.Core.ExtensibilityServices private void LoadExtensionData() { - var extensionManager = (IExtensionManager)this.ServiceProvider.GetService(typeof(IExtensionManager)); + var extensionManager = this.ServiceProvider.GetService(); this.ExtensionData = extensionManager.GetServices(); } diff --git a/src/WixToolset.Core/IncribeContext.cs b/src/WixToolset.Core/IncribeContext.cs index 9a002d68..8db4daef 100644 --- a/src/WixToolset.Core/IncribeContext.cs +++ b/src/WixToolset.Core/IncribeContext.cs @@ -1,4 +1,4 @@ -// 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. +// 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 { @@ -8,12 +8,12 @@ namespace WixToolset.Core internal class InscribeContext : IInscribeContext { - public InscribeContext(IServiceProvider serviceProvider) + public InscribeContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public string IntermediateFolder { get; set; } diff --git a/src/WixToolset.Core/LayoutContext.cs b/src/WixToolset.Core/LayoutContext.cs index b8a8635d..385aa610 100644 --- a/src/WixToolset.Core/LayoutContext.cs +++ b/src/WixToolset.Core/LayoutContext.cs @@ -1,4 +1,4 @@ -// 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. +// 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 { @@ -6,15 +6,16 @@ namespace WixToolset.Core using System.Collections.Generic; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class LayoutContext : ILayoutContext { - internal LayoutContext(IServiceProvider serviceProvider) + internal LayoutContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IEnumerable Extensions { get; set; } diff --git a/src/WixToolset.Core/LayoutCreator.cs b/src/WixToolset.Core/LayoutCreator.cs index 684465d2..16fdd70f 100644 --- a/src/WixToolset.Core/LayoutCreator.cs +++ b/src/WixToolset.Core/LayoutCreator.cs @@ -16,14 +16,14 @@ namespace WixToolset.Core /// internal class LayoutCreator : ILayoutCreator { - internal LayoutCreator(IServiceProvider serviceProvider) + internal LayoutCreator(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs index d862c326..0c519b88 100644 --- a/src/WixToolset.Core/Librarian.cs +++ b/src/WixToolset.Core/Librarian.cs @@ -16,14 +16,14 @@ namespace WixToolset.Core /// internal class Librarian : ILibrarian { - internal Librarian(IServiceProvider serviceProvider) + internal Librarian(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = this.ServiceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/LibraryContext.cs b/src/WixToolset.Core/LibraryContext.cs index 5dd17dc8..4df19702 100644 --- a/src/WixToolset.Core/LibraryContext.cs +++ b/src/WixToolset.Core/LibraryContext.cs @@ -11,12 +11,12 @@ namespace WixToolset.Core internal class LibraryContext : ILibraryContext { - internal LibraryContext(IServiceProvider serviceProvider) + internal LibraryContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IMessaging Messaging { get; set; } diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs index f45a3411..64dd2320 100644 --- a/src/WixToolset.Core/LinkContext.cs +++ b/src/WixToolset.Core/LinkContext.cs @@ -1,4 +1,4 @@ -// 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. +// 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 { @@ -7,15 +7,16 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class LinkContext : ILinkContext { - internal LinkContext(IServiceProvider serviceProvider) + internal LinkContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IEnumerable Extensions { get; set; } diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs index f05aabd1..bc4f5774 100644 --- a/src/WixToolset.Core/Linker.cs +++ b/src/WixToolset.Core/Linker.cs @@ -27,14 +27,14 @@ namespace WixToolset.Core /// /// Creates a linker. /// - internal Linker(IServiceProvider serviceProvider) + internal Linker(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = this.ServiceProvider.GetService(); this.sectionIdOnRows = true; // TODO: what is the correct value for this? } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/LocalizationParser.cs b/src/WixToolset.Core/LocalizationParser.cs index a3272fc8..3b66b707 100644 --- a/src/WixToolset.Core/LocalizationParser.cs +++ b/src/WixToolset.Core/LocalizationParser.cs @@ -15,7 +15,7 @@ namespace WixToolset.Core public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; private const string XmlElementName = "WixLocalization"; - internal LocalizationParser(IServiceProvider serviceProvider) + internal LocalizationParser(IWixToolsetServiceProvider serviceProvider) { this.Messaging = serviceProvider.GetService(); } diff --git a/src/WixToolset.Core/PreprocessContext.cs b/src/WixToolset.Core/PreprocessContext.cs index 749bf213..15529d24 100644 --- a/src/WixToolset.Core/PreprocessContext.cs +++ b/src/WixToolset.Core/PreprocessContext.cs @@ -7,15 +7,16 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Extensibility; using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class PreprocessContext : IPreprocessContext { - internal PreprocessContext(IServiceProvider serviceProvider) + internal PreprocessContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IEnumerable Extensions { get; set; } diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs index d897446c..c6cd3801 100644 --- a/src/WixToolset.Core/Preprocessor.cs +++ b/src/WixToolset.Core/Preprocessor.cs @@ -37,14 +37,14 @@ namespace WixToolset.Core XmlResolver = null, }; - internal Preprocessor(IServiceProvider serviceProvider) + internal Preprocessor(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = this.ServiceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } @@ -1469,7 +1469,7 @@ namespace WixToolset.Core private class ProcessingState { - public ProcessingState(IServiceProvider serviceProvider, IPreprocessContext context) + public ProcessingState(IWixToolsetServiceProvider serviceProvider, IPreprocessContext context) { var path = Path.GetFullPath(context.SourcePath); diff --git a/src/WixToolset.Core/ResolveContext.cs b/src/WixToolset.Core/ResolveContext.cs index 1694d6e5..34da34d1 100644 --- a/src/WixToolset.Core/ResolveContext.cs +++ b/src/WixToolset.Core/ResolveContext.cs @@ -11,12 +11,12 @@ namespace WixToolset.Core internal class ResolveContext : IResolveContext { - internal ResolveContext(IServiceProvider serviceProvider) + internal ResolveContext(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; } - public IServiceProvider ServiceProvider { get; } + public IWixToolsetServiceProvider ServiceProvider { get; } public IEnumerable BindPaths { get; set; } diff --git a/src/WixToolset.Core/Resolver.cs b/src/WixToolset.Core/Resolver.cs index d4a03d82..1342444f 100644 --- a/src/WixToolset.Core/Resolver.cs +++ b/src/WixToolset.Core/Resolver.cs @@ -17,7 +17,7 @@ namespace WixToolset.Core /// internal class Resolver : IResolver { - internal Resolver(IServiceProvider serviceProvider) + internal Resolver(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; @@ -26,7 +26,7 @@ namespace WixToolset.Core this.VariableResolver = serviceProvider.GetService(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/VariableResolver.cs b/src/WixToolset.Core/VariableResolver.cs index 8cddfaa5..88067673 100644 --- a/src/WixToolset.Core/VariableResolver.cs +++ b/src/WixToolset.Core/VariableResolver.cs @@ -21,7 +21,7 @@ namespace WixToolset.Core /// /// Instantiate a new VariableResolver. /// - internal VariableResolver(IServiceProvider serviceProvider) + internal VariableResolver(IWixToolsetServiceProvider serviceProvider) { this.ServiceProvider = serviceProvider; this.Messaging = serviceProvider.GetService(); @@ -31,7 +31,7 @@ namespace WixToolset.Core this.localizedControls = new Dictionary(); } - private IServiceProvider ServiceProvider { get; } + private IWixToolsetServiceProvider ServiceProvider { get; } private IMessaging Messaging { get; } diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs index c7d6ff1d..68def7a8 100644 --- a/src/WixToolset.Core/WixToolsetServiceProvider.cs +++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs @@ -10,11 +10,11 @@ namespace WixToolset.Core using WixToolset.Extensibility.Data; using WixToolset.Extensibility.Services; - public sealed class WixToolsetServiceProvider : IServiceProvider + public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider { public WixToolsetServiceProvider() { - this.CreationFunctions = new Dictionary, object>>(); + this.CreationFunctions = new Dictionary, object>>(); this.Singletons = new Dictionary(); // Singletons. @@ -67,7 +67,7 @@ namespace WixToolset.Core this.AddService((provider, singletons) => new VariableResolver(provider)); } - private Dictionary, object>> CreationFunctions { get; } + private Dictionary, object>> CreationFunctions { get; } private Dictionary Singletons { get; } @@ -96,17 +96,31 @@ namespace WixToolset.Core return service != null; } + public bool TryGetService(out T service) + where T : class + { + var success = this.TryGetService(typeof(T), out var untypedService); + service = (T)untypedService; + return success; + } + public object GetService(Type serviceType) { return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType)); } - public void AddService(Type serviceType, Func, object> creationFunction) + public T GetService() + where T : class + { + return (T)this.GetService(typeof(T)); + } + + public void AddService(Type serviceType, Func, object> creationFunction) { this.CreationFunctions[serviceType] = creationFunction; } - public void AddService(Func, T> creationFunction) + public void AddService(Func, T> creationFunction) where T : class { this.AddService(typeof(T), creationFunction); diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs index b1a4c607..432d025a 100644 --- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs @@ -23,11 +23,11 @@ namespace WixToolsetTest.CoreIntegration var serviceProvider = new WixToolsetServiceProvider(); - var context = (IPreprocessContext)serviceProvider.GetService(typeof(IPreprocessContext)); + var context = serviceProvider.GetService(); context.SourcePath = sourcePath; context.IncludeSearchPaths = new[] { includeFolder }; - var preprocessor = (IPreprocessor)serviceProvider.GetService(typeof(IPreprocessor)); + var preprocessor = serviceProvider.GetService(); var result = preprocessor.Preprocess(context); var includedFile = result.IncludedFiles.Single(); -- cgit v1.2.3-55-g6feb