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();