@joebigelow / wix-1 / commits / 177784c9

Use IWixToolsetServiceProvider and IWixToolsetCoreServiceProvider to expose the more convenient methods from WixToolsetServiceProvider without requiring casting or extension methods.

Sean Hall committed Apr 2, 2020 at 20:45 UTC 177784c9a6d93eeb3c195e6d62b97eb4c1dde32b
40 files changed +119 -91
src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+1 -1
@@ -44,7 +44,7 @@ namespace WixToolset.Core.Burn
44 this.BackendExtensions = backedExtensions;
45 }
46
47 - private IServiceProvider ServiceProvider { get; }
47 + private IWixToolsetServiceProvider ServiceProvider { get; }
48
49 private IMessaging Messaging { get; }
50
src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
+1 -1
@@ -23,7 +23,7 @@ namespace WixToolset.Core.Burn.Bundles
23 {
24 private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'";
25
26 - public ProcessMsiPackageCommand(IServiceProvider serviceProvider, IEnumerable<IBurnBackendExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadTuple> payloadTuples)
26 + public ProcessMsiPackageCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<IBurnBackendExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadTuple> payloadTuples)
27 {
28 this.Messaging = serviceProvider.GetService<IMessaging>();
29 this.BackendHelper = serviceProvider.GetService<IBackendHelper>();
src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
+1 -1
@@ -19,7 +19,7 @@ namespace WixToolset.Core.Burn.Bundles
19 {
20 private static readonly Version EmptyVersion = new Version(0, 0, 0, 0);
21
22 - public ProcessPayloadsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable<WixBundlePayloadTuple> payloads, PackagingType defaultPackaging, string layoutDirectory)
22 + public ProcessPayloadsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable<WixBundlePayloadTuple> payloads, PackagingType defaultPackaging, string layoutDirectory)
23 {
24 this.Messaging = serviceProvider.GetService<IMessaging>();
25
src/WixToolset.Core.TestPackage/WixRunner.cs
+2 -2
@@ -23,7 +23,7 @@ namespace WixToolset.Core.TestPackage
23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() };
24 }
25
26 - public static int Execute(string[] args, IServiceProvider serviceProvider, out List<Message> messages)
26 + public static int Execute(string[] args, IWixToolsetServiceProvider serviceProvider, out List<Message> messages)
27 {
28 var listener = new TestMessageListener();
29
@@ -42,7 +42,7 @@ namespace WixToolset.Core.TestPackage
42 return command?.Execute() ?? 1;
43 }
44
45 - private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions)
45 + private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, string[] extensions)
46 {
47 var extensionManager = serviceProvider.GetService<IExtensionManager>();
48
src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+1 -1
@@ -54,7 +54,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
54 this.BackendExtensions = backendExtension;
55 }
56
57 - public IServiceProvider ServiceProvider { get; }
57 + public IWixToolsetServiceProvider ServiceProvider { get; }
58
59 private IMessaging Messaging { get; }
60
src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
+2 -2
@@ -15,7 +15,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
15
16 public class CabinetResolver
17 {
18 - public CabinetResolver(IServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
18 + public CabinetResolver(IWixToolsetServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
19 {
20 this.ServiceProvider = serviceProvider;
21
@@ -24,7 +24,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
24 this.BackendExtensions = backendExtensions;
25 }
26
27 - private IServiceProvider ServiceProvider { get; }
27 + private IWixToolsetServiceProvider ServiceProvider { get; }
28
29 private string CabCachePath { get; }
30
src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+2 -2
@@ -33,7 +33,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
33
34 private Dictionary<string, string> lastCabinetAddedToMediaTable; // Key is First Cabinet Name, Value is Last Cabinet Added in the Split Sequence
35
36 - public CreateCabinetsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper)
36 + public CreateCabinetsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper)
37 {
38 this.fileTransfers = new List<IFileTransfer>();
39
@@ -46,7 +46,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
46 this.BackendHelper = backendHelper;
47 }
48
49 - public IServiceProvider ServiceProvider { get; }
49 + public IWixToolsetServiceProvider ServiceProvider { get; }
50
51 public IBackendHelper BackendHelper { get; }
52
src/WixToolset.Core.WindowsInstaller/UnbindContext.cs
+8 -2
@@ -1,13 +1,19 @@
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.
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
3 namespace WixToolset.Core
4 {
5 using System;
6 using WixToolset.Extensibility.Data;
7 + using WixToolset.Extensibility.Services;
8
9 internal class UnbindContext : IUnbindContext
10 {
10 - public IServiceProvider ServiceProvider { get; }
11 + internal UnbindContext(IWixToolsetServiceProvider serviceProvider)
12 + {
13 + this.ServiceProvider = serviceProvider;
14 + }
15 +
16 + public IWixToolsetServiceProvider ServiceProvider { get; }
17
18 public string ExportBasePath { get; set; }
19
src/WixToolset.Core.WindowsInstaller/Unbinder.cs
+5 -3
@@ -2,11 +2,11 @@
2
3 namespace WixToolset.Core
4 {
5 - using System.Collections;
5 + using System.Collections.Generic;
6 using System.IO;
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 - using System.Collections.Generic;
9 + using WixToolset.Extensibility.Services;
10
11 /// <summary>
12 /// Unbinder core of the WiX toolset.
@@ -21,6 +21,8 @@ namespace WixToolset.Core
21 /// <value>Set to true if the input msi is part of an admin image.</value>
22 public bool IsAdminImage { get; set; }
23
24 + public IWixToolsetServiceProvider ServiceProvider { get; }
25 +
26 /// <summary>
27 /// Gets or sets the option to suppress demodularizing values.
28 /// </summary>
@@ -64,7 +66,7 @@ namespace WixToolset.Core
66 // if we don't have the temporary files object yet, get one
67 Directory.CreateDirectory(this.TempFilesLocation); // ensure the base path is there
68
67 - var context = new UnbindContext();
69 + var context = new UnbindContext(this.ServiceProvider);
70 context.InputFilePath = file;
71 context.ExportBasePath = exportBasePath;
72 context.IntermediateFolder = this.TempFilesLocation;
src/WixToolset.Core/BindContext.cs
+3 -2
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data;
10 + using WixToolset.Extensibility.Services;
11
12 internal class BindContext : IBindContext
13 {
13 - internal BindContext(IServiceProvider serviceProvider)
14 + internal BindContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
18 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public IEnumerable<BindPath> BindPaths { get; set; }
22
src/WixToolset.Core/Binder.cs
+2 -2
@@ -17,12 +17,12 @@ namespace WixToolset.Core
17 /// </summary>
18 internal class Binder : IBinder
19 {
20 - internal Binder(IServiceProvider serviceProvider)
20 + internal Binder(IWixToolsetServiceProvider serviceProvider)
21 {
22 this.ServiceProvider = serviceProvider;
23 }
24
25 - public IServiceProvider ServiceProvider { get; }
25 + public IWixToolsetServiceProvider ServiceProvider { get; }
26
27 public IBindResult Bind(IBindContext context)
28 {
src/WixToolset.Core/CommandLine/BuildCommand.cs
+4 -4
@@ -16,7 +16,7 @@ namespace WixToolset.Core.CommandLine
16 {
17 private readonly CommandLine commandLine;
18
19 - public BuildCommand(IServiceProvider serviceProvider)
19 + public BuildCommand(IWixToolsetServiceProvider serviceProvider)
20 {
21 this.ServiceProvider = serviceProvider;
22 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -28,7 +28,7 @@ namespace WixToolset.Core.CommandLine
28
29 public bool StopParsing => this.commandLine.ShowHelp;
30
31 - private IServiceProvider ServiceProvider { get; }
31 + private IWixToolsetServiceProvider ServiceProvider { get; }
32
33 private IMessaging Messaging { get; }
34
@@ -462,13 +462,13 @@ namespace WixToolset.Core.CommandLine
462
463 public string BuiltOutputsFile { get; private set; }
464
465 - public CommandLine(IServiceProvider serviceProvider, IMessaging messaging)
465 + public CommandLine(IWixToolsetServiceProvider serviceProvider, IMessaging messaging)
466 {
467 this.ServiceProvider = serviceProvider;
468 this.Messaging = messaging;
469 }
470
471 - private IServiceProvider ServiceProvider { get; }
471 + private IWixToolsetServiceProvider ServiceProvider { get; }
472
473 private IMessaging Messaging { get; }
474
src/WixToolset.Core/CommandLine/CommandLine.cs
+2 -2
@@ -23,14 +23,14 @@ namespace WixToolset.Core.CommandLine
23 {
24 private static readonly char[] BindPathSplit = { '=' };
25
26 - public CommandLine(IServiceProvider serviceProvider)
26 + public CommandLine(IWixToolsetServiceProvider serviceProvider)
27 {
28 this.ServiceProvider = serviceProvider;
29
30 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
31 }
32
33 - private IServiceProvider ServiceProvider { get; }
33 + private IWixToolsetServiceProvider ServiceProvider { get; }
34
35 private IMessaging Messaging { get; set; }
36
src/WixToolset.Core/CommandLine/CommandLineArguments.cs
+4 -4
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core.CommandLine
4 {
@@ -20,9 +20,9 @@ namespace WixToolset.Core.CommandLine
20
21 public string ErrorArgument { get; set; }
22
23 - private IServiceProvider ServiceProvider { get; }
23 + private IWixToolsetServiceProvider ServiceProvider { get; }
24
25 - public CommandLineArguments(IServiceProvider serviceProvider)
25 + public CommandLineArguments(IWixToolsetServiceProvider serviceProvider)
26 {
27 this.ServiceProvider = serviceProvider;
28 }
@@ -43,7 +43,7 @@ namespace WixToolset.Core.CommandLine
43
44 public ICommandLineParser Parse()
45 {
46 - var messaging = (IMessaging)this.ServiceProvider.GetService(typeof(IMessaging));
46 + var messaging = this.ServiceProvider.GetService<IMessaging>();
47
48 return new CommandLineParser(messaging, this.Arguments, this.ErrorArgument);
49 }
src/WixToolset.Core/CommandLine/CommandLineContext.cs
+3 -3
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core.CommandLine
4 {
@@ -8,12 +8,12 @@ namespace WixToolset.Core.CommandLine
8
9 internal class CommandLineContext : ICommandLineContext
10 {
11 - public CommandLineContext(IServiceProvider serviceProvider)
11 + public CommandLineContext(IWixToolsetServiceProvider serviceProvider)
12 {
13 this.ServiceProvider = serviceProvider;
14 }
15
16 - public IServiceProvider ServiceProvider { get; }
16 + public IWixToolsetServiceProvider ServiceProvider { get; }
17
18 public IExtensionManager ExtensionManager { get; set; }
19
src/WixToolset.Core/CommandLine/CompileCommand.cs
+3 -3
@@ -12,14 +12,14 @@ namespace WixToolset.Core.CommandLine
12
13 internal class CompileCommand : ICommandLineCommand
14 {
15 - public CompileCommand(IServiceProvider serviceProvider)
15 + public CompileCommand(IWixToolsetServiceProvider serviceProvider)
16 {
17 this.ServiceProvider = serviceProvider;
18 this.Messaging = serviceProvider.GetService<IMessaging>();
19 this.ExtensionManager = serviceProvider.GetService<IExtensionManager>();
20 }
21
22 - public CompileCommand(IServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform)
22 + public CompileCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform)
23 {
24 this.ServiceProvider = serviceProvider;
25 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -29,7 +29,7 @@ namespace WixToolset.Core.CommandLine
29 this.Platform = platform;
30 }
31
32 - private IServiceProvider ServiceProvider { get; }
32 + private IWixToolsetServiceProvider ServiceProvider { get; }
33
34 public IMessaging Messaging { get; }
35
src/WixToolset.Core/CommandLine/DecompileCommand.cs
+2 -2
@@ -14,7 +14,7 @@ namespace WixToolset.Core.CommandLine
14 {
15 private readonly CommandLine commandLine;
16
17 - public DecompileCommand(IServiceProvider serviceProvider)
17 + public DecompileCommand(IWixToolsetServiceProvider serviceProvider)
18 {
19 this.ServiceProvider = serviceProvider;
20 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -25,7 +25,7 @@ namespace WixToolset.Core.CommandLine
25
26 public bool StopParsing => this.commandLine.ShowHelp;
27
28 - private IServiceProvider ServiceProvider { get; }
28 + private IWixToolsetServiceProvider ServiceProvider { get; }
29
30 public IMessaging Messaging { get; }
31
src/WixToolset.Core/CompileContext.cs
+4 -3
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core
4 {
@@ -8,15 +8,16 @@ namespace WixToolset.Core
8 using WixToolset.Data;
9 using WixToolset.Extensibility;
10 using WixToolset.Extensibility.Data;
11 + using WixToolset.Extensibility.Services;
12
13 internal class CompileContext : ICompileContext
14 {
14 - internal CompileContext(IServiceProvider serviceProvider)
15 + internal CompileContext(IWixToolsetServiceProvider serviceProvider)
16 {
17 this.ServiceProvider = serviceProvider;
18 }
19
19 - public IServiceProvider ServiceProvider { get; }
20 + public IWixToolsetServiceProvider ServiceProvider { get; }
21
22 public string CompilationId { get; set; }
23
src/WixToolset.Core/Compiler.cs
+2 -2
@@ -56,14 +56,14 @@ namespace WixToolset.Core
56 Icon,
57 }
58
59 - internal Compiler(IServiceProvider serviceProvider)
59 + internal Compiler(IWixToolsetServiceProvider serviceProvider)
60 {
61 this.ServiceProvider = serviceProvider;
62
63 this.Messaging = serviceProvider.GetService<IMessaging>();
64 }
65
66 - private IServiceProvider ServiceProvider { get; }
66 + private IWixToolsetServiceProvider ServiceProvider { get; }
67
68 public IMessaging Messaging { get; }
69
src/WixToolset.Core/DecompileContext.cs
+3 -2
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data;
10 + using WixToolset.Extensibility.Services;
11
12 internal class DecompileContext : IDecompileContext
13 {
13 - internal DecompileContext(IServiceProvider serviceProvider)
14 + internal DecompileContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
18 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public string DecompilePath { get; set; }
22
src/WixToolset.Core/Decompiler.cs
+2 -2
@@ -12,12 +12,12 @@ namespace WixToolset.Core
12 /// </summary>
13 internal class Decompiler : IDecompiler
14 {
15 - internal Decompiler(IServiceProvider serviceProvider)
15 + internal Decompiler(IWixToolsetServiceProvider serviceProvider)
16 {
17 this.ServiceProvider = serviceProvider;
18 }
19
20 - public IServiceProvider ServiceProvider { get; }
20 + public IWixToolsetServiceProvider ServiceProvider { get; }
21
22 public IDecompileResult Decompile(IDecompileContext context)
23 {
src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
+1 -1
@@ -12,7 +12,7 @@ namespace WixToolset.Core.ExtensibilityServices
12 {
13 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" };
14
15 - public BackendHelper(IServiceProvider serviceProvider)
15 + public BackendHelper(IWixToolsetServiceProvider serviceProvider)
16 {
17 this.Messaging = serviceProvider.GetService<IMessaging>();
18 }
src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+3 -3
@@ -33,14 +33,14 @@ namespace WixToolset.Core.ExtensibilityServices
33
34 private static readonly Regex PutGuidHere = new Regex(@"PUT\-GUID\-(?:\d+\-)?HERE", RegexOptions.Singleline);
35
36 - public ParseHelper(IServiceProvider serviceProvider)
36 + public ParseHelper(IWixToolsetServiceProvider serviceProvider)
37 {
38 this.ServiceProvider = serviceProvider;
39
40 this.Messaging = serviceProvider.GetService<IMessaging>();
41 }
42
43 - private IServiceProvider ServiceProvider { get; }
43 + private IWixToolsetServiceProvider ServiceProvider { get; }
44
45 private IMessaging Messaging { get; }
46
@@ -976,7 +976,7 @@ namespace WixToolset.Core.ExtensibilityServices
976
977 private void CreateTupleDefinitionCreator()
978 {
979 - this.Creator = (ITupleDefinitionCreator)this.ServiceProvider.GetService(typeof(ITupleDefinitionCreator));
979 + this.Creator = this.ServiceProvider.GetService<ITupleDefinitionCreator>();
980 }
981
982 private static IntermediateTuple CreateTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, Identifier identifier)
src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+2 -2
@@ -17,14 +17,14 @@ namespace WixToolset.Core.ExtensibilityServices
17 private static readonly char[] VariableSplitter = new char[] { '.' };
18 private static readonly char[] ArgumentSplitter = new char[] { ',' };
19
20 - public PreprocessHelper(IServiceProvider serviceProvider)
20 + public PreprocessHelper(IWixToolsetServiceProvider serviceProvider)
21 {
22 this.ServiceProvider = serviceProvider;
23
24 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
25 }
26
27 - private IServiceProvider ServiceProvider { get; }
27 + private IWixToolsetServiceProvider ServiceProvider { get; }
28
29 private IMessaging Messaging { get; }
30
src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
+3 -3
@@ -10,12 +10,12 @@ namespace WixToolset.Core.ExtensibilityServices
10
11 internal class TupleDefinitionCreator : ITupleDefinitionCreator
12 {
13 - public TupleDefinitionCreator(IServiceProvider serviceProvider)
13 + public TupleDefinitionCreator(IWixToolsetServiceProvider serviceProvider)
14 {
15 this.ServiceProvider = serviceProvider;
16 }
17
18 - private IServiceProvider ServiceProvider { get; }
18 + private IWixToolsetServiceProvider ServiceProvider { get; }
19
20 private IEnumerable<IExtensionData> ExtensionData { get; set; }
21
@@ -62,7 +62,7 @@ namespace WixToolset.Core.ExtensibilityServices
62
63 private void LoadExtensionData()
64 {
65 - var extensionManager = (IExtensionManager)this.ServiceProvider.GetService(typeof(IExtensionManager));
65 + var extensionManager = this.ServiceProvider.GetService<IExtensionManager>();
66
67 this.ExtensionData = extensionManager.GetServices<IExtensionData>();
68 }
src/WixToolset.Core/IncribeContext.cs
+3 -3
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core
4 {
@@ -8,12 +8,12 @@ namespace WixToolset.Core
8
9 internal class InscribeContext : IInscribeContext
10 {
11 - public InscribeContext(IServiceProvider serviceProvider)
11 + public InscribeContext(IWixToolsetServiceProvider serviceProvider)
12 {
13 this.ServiceProvider = serviceProvider;
14 }
15
16 - public IServiceProvider ServiceProvider { get; }
16 + public IWixToolsetServiceProvider ServiceProvider { get; }
17
18 public string IntermediateFolder { get; set; }
19
src/WixToolset.Core/LayoutContext.cs
+4 -3
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core
4 {
@@ -6,15 +6,16 @@ namespace WixToolset.Core
6 using System.Collections.Generic;
7 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data;
9 + using WixToolset.Extensibility.Services;
10
11 internal class LayoutContext : ILayoutContext
12 {
12 - internal LayoutContext(IServiceProvider serviceProvider)
13 + internal LayoutContext(IWixToolsetServiceProvider serviceProvider)
14 {
15 this.ServiceProvider = serviceProvider;
16 }
17
17 - public IServiceProvider ServiceProvider { get; }
18 + public IWixToolsetServiceProvider ServiceProvider { get; }
19
20 public IEnumerable<ILayoutExtension> Extensions { get; set; }
21
src/WixToolset.Core/LayoutCreator.cs
+2 -2
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary>
17 internal class LayoutCreator : ILayoutCreator
18 {
19 - internal LayoutCreator(IServiceProvider serviceProvider)
19 + internal LayoutCreator(IWixToolsetServiceProvider serviceProvider)
20 {
21 this.ServiceProvider = serviceProvider;
22
23 this.Messaging = serviceProvider.GetService<IMessaging>();
24 }
25
26 - private IServiceProvider ServiceProvider { get; }
26 + private IWixToolsetServiceProvider ServiceProvider { get; }
27
28 private IMessaging Messaging { get; }
29
src/WixToolset.Core/Librarian.cs
+2 -2
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary>
17 internal class Librarian : ILibrarian
18 {
19 - internal Librarian(IServiceProvider serviceProvider)
19 + internal Librarian(IWixToolsetServiceProvider serviceProvider)
20 {
21 this.ServiceProvider = serviceProvider;
22
23 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
24 }
25
26 - private IServiceProvider ServiceProvider { get; }
26 + private IWixToolsetServiceProvider ServiceProvider { get; }
27
28 private IMessaging Messaging { get; }
29
src/WixToolset.Core/LibraryContext.cs
+2 -2
@@ -11,12 +11,12 @@ namespace WixToolset.Core
11
12 internal class LibraryContext : ILibraryContext
13 {
14 - internal LibraryContext(IServiceProvider serviceProvider)
14 + internal LibraryContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
19 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public IMessaging Messaging { get; set; }
22
src/WixToolset.Core/LinkContext.cs
+4 -3
@@ -1,4 +1,4 @@
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.
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
3 namespace WixToolset.Core
4 {
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data;
10 + using WixToolset.Extensibility.Services;
11
12 internal class LinkContext : ILinkContext
13 {
13 - internal LinkContext(IServiceProvider serviceProvider)
14 + internal LinkContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
18 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public IEnumerable<ILinkerExtension> Extensions { get; set; }
22
src/WixToolset.Core/Linker.cs
+2 -2
@@ -27,14 +27,14 @@ namespace WixToolset.Core
27 /// <summary>
28 /// Creates a linker.
29 /// </summary>
30 - internal Linker(IServiceProvider serviceProvider)
30 + internal Linker(IWixToolsetServiceProvider serviceProvider)
31 {
32 this.ServiceProvider = serviceProvider;
33 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
34 this.sectionIdOnRows = true; // TODO: what is the correct value for this?
35 }
36
37 - private IServiceProvider ServiceProvider { get; }
37 + private IWixToolsetServiceProvider ServiceProvider { get; }
38
39 private IMessaging Messaging { get; }
40
src/WixToolset.Core/LocalizationParser.cs
+1 -1
@@ -15,7 +15,7 @@ namespace WixToolset.Core
15 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
16 private const string XmlElementName = "WixLocalization";
17
18 - internal LocalizationParser(IServiceProvider serviceProvider)
18 + internal LocalizationParser(IWixToolsetServiceProvider serviceProvider)
19 {
20 this.Messaging = serviceProvider.GetService<IMessaging>();
21 }
src/WixToolset.Core/PreprocessContext.cs
+3 -2
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data;
10 + using WixToolset.Extensibility.Services;
11
12 internal class PreprocessContext : IPreprocessContext
13 {
13 - internal PreprocessContext(IServiceProvider serviceProvider)
14 + internal PreprocessContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
18 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public IEnumerable<IPreprocessorExtension> Extensions { get; set; }
22
src/WixToolset.Core/Preprocessor.cs
+3 -3
@@ -37,14 +37,14 @@ namespace WixToolset.Core
37 XmlResolver = null,
38 };
39
40 - internal Preprocessor(IServiceProvider serviceProvider)
40 + internal Preprocessor(IWixToolsetServiceProvider serviceProvider)
41 {
42 this.ServiceProvider = serviceProvider;
43
44 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
45 }
46
47 - private IServiceProvider ServiceProvider { get; }
47 + private IWixToolsetServiceProvider ServiceProvider { get; }
48
49 private IMessaging Messaging { get; }
50
@@ -1469,7 +1469,7 @@ namespace WixToolset.Core
1469
1470 private class ProcessingState
1471 {
1472 - public ProcessingState(IServiceProvider serviceProvider, IPreprocessContext context)
1472 + public ProcessingState(IWixToolsetServiceProvider serviceProvider, IPreprocessContext context)
1473 {
1474 var path = Path.GetFullPath(context.SourcePath);
1475
src/WixToolset.Core/ResolveContext.cs
+2 -2
@@ -11,12 +11,12 @@ namespace WixToolset.Core
11
12 internal class ResolveContext : IResolveContext
13 {
14 - internal ResolveContext(IServiceProvider serviceProvider)
14 + internal ResolveContext(IWixToolsetServiceProvider serviceProvider)
15 {
16 this.ServiceProvider = serviceProvider;
17 }
18
19 - public IServiceProvider ServiceProvider { get; }
19 + public IWixToolsetServiceProvider ServiceProvider { get; }
20
21 public IEnumerable<IBindPath> BindPaths { get; set; }
22
src/WixToolset.Core/Resolver.cs
+2 -2
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17 /// </summary>
18 internal class Resolver : IResolver
19 {
20 - internal Resolver(IServiceProvider serviceProvider)
20 + internal Resolver(IWixToolsetServiceProvider serviceProvider)
21 {
22 this.ServiceProvider = serviceProvider;
23
@@ -26,7 +26,7 @@ namespace WixToolset.Core
26 this.VariableResolver = serviceProvider.GetService<IVariableResolver>();
27 }
28
29 - private IServiceProvider ServiceProvider { get; }
29 + private IWixToolsetServiceProvider ServiceProvider { get; }
30
31 private IMessaging Messaging { get; }
32
src/WixToolset.Core/VariableResolver.cs
+2 -2
@@ -21,7 +21,7 @@ namespace WixToolset.Core
21 /// <summary>
22 /// Instantiate a new VariableResolver.
23 /// </summary>
24 - internal VariableResolver(IServiceProvider serviceProvider)
24 + internal VariableResolver(IWixToolsetServiceProvider serviceProvider)
25 {
26 this.ServiceProvider = serviceProvider;
27 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -31,7 +31,7 @@ namespace WixToolset.Core
31 this.localizedControls = new Dictionary<string, LocalizedControl>();
32 }
33
34 - private IServiceProvider ServiceProvider { get; }
34 + private IWixToolsetServiceProvider ServiceProvider { get; }
35
36 private IMessaging Messaging { get; }
37
src/WixToolset.Core/WixToolsetServiceProvider.cs
+19 -5
@@ -10,11 +10,11 @@ namespace WixToolset.Core
10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services;
12
13 - public sealed class WixToolsetServiceProvider : IServiceProvider
13 + public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider
14 {
15 public WixToolsetServiceProvider()
16 {
17 - this.CreationFunctions = new Dictionary<Type, Func<IServiceProvider, Dictionary<Type, object>, object>>();
17 + this.CreationFunctions = new Dictionary<Type, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object>>();
18 this.Singletons = new Dictionary<Type, object>();
19
20 // Singletons.
@@ -67,7 +67,7 @@ namespace WixToolset.Core
67 this.AddService<IVariableResolver>((provider, singletons) => new VariableResolver(provider));
68 }
69
70 - private Dictionary<Type, Func<IServiceProvider, Dictionary<Type, object>, object>> CreationFunctions { get; }
70 + private Dictionary<Type, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object>> CreationFunctions { get; }
71
72 private Dictionary<Type, object> Singletons { get; }
73
@@ -96,17 +96,31 @@ namespace WixToolset.Core
96 return service != null;
97 }
98
99 + public bool TryGetService<T>(out T service)
100 + where T : class
101 + {
102 + var success = this.TryGetService(typeof(T), out var untypedService);
103 + service = (T)untypedService;
104 + return success;
105 + }
106 +
107 public object GetService(Type serviceType)
108 {
109 return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));
110 }
111
104 - public void AddService(Type serviceType, Func<IServiceProvider, Dictionary<Type, object>, object> creationFunction)
112 + public T GetService<T>()
113 + where T : class
114 + {
115 + return (T)this.GetService(typeof(T));
116 + }
117 +
118 + public void AddService(Type serviceType, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object> creationFunction)
119 {
120 this.CreationFunctions[serviceType] = creationFunction;
121 }
122
109 - public void AddService<T>(Func<IServiceProvider, Dictionary<Type, object>, T> creationFunction)
123 + public void AddService<T>(Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, T> creationFunction)
124 where T : class
125 {
126 this.AddService(typeof(T), creationFunction);
src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+2 -2
@@ -23,11 +23,11 @@ namespace WixToolsetTest.CoreIntegration
23
24 var serviceProvider = new WixToolsetServiceProvider();
25
26 - var context = (IPreprocessContext)serviceProvider.GetService(typeof(IPreprocessContext));
26 + var context = serviceProvider.GetService<IPreprocessContext>();
27 context.SourcePath = sourcePath;
28 context.IncludeSearchPaths = new[] { includeFolder };
29
30 - var preprocessor = (IPreprocessor)serviceProvider.GetService(typeof(IPreprocessor));
30 + var preprocessor = serviceProvider.GetService<IPreprocessor>();
31 var result = preprocessor.Preprocess(context);
32
33 var includedFile = result.IncludedFiles.Single();