aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-14 11:17:20 -0700
committerRob Mensching <rob@firegiant.com>2021-03-14 11:28:04 -0700
commit9aae370eee18b4c87300f333fa52f3cd0d7f34d1 (patch)
tree27aae273837bb9041e7d509c410910a6df05796c /src
parentf4af6bf27abaaac7f0508ce2beafb31b5a64b53f (diff)
downloadwix-9aae370eee18b4c87300f333fa52f3cd0d7f34d1.tar.gz
wix-9aae370eee18b4c87300f333fa52f3cd0d7f34d1.tar.bz2
wix-9aae370eee18b4c87300f333fa52f3cd0d7f34d1.zip
Use extension methods instead of a custom interface for IServiceProvider
There are several helpful methods for getting services out of an IServiceProvider. Instead of introducing a custom interface to inject those methods into the inheritance tree, this change uses extension methods to add the helper methods and reduce the number of custom interfaces.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Extensibility/Data/IBindContext.cs67
-rw-r--r--src/WixToolset.Extensibility/Data/ICommandLineContext.cs2
-rw-r--r--src/WixToolset.Extensibility/Data/ICompileContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/IDecompileContext.cs2
-rw-r--r--src/WixToolset.Extensibility/Data/IFileSystemContext.cs2
-rw-r--r--src/WixToolset.Extensibility/Data/IInscribeContext.cs2
-rw-r--r--src/WixToolset.Extensibility/Data/ILayoutContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/ILibraryContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/ILinkContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/IPreprocessContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/IResolveContext.cs4
-rw-r--r--src/WixToolset.Extensibility/Data/IUnbindContext.cs3
-rw-r--r--src/WixToolset.Extensibility/Services/IWixtoolsetCoreServiceProvider.cs2
-rw-r--r--src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs (renamed from src/WixToolset.Extensibility/Services/IWixToolsetServiceProvider.cs)24
14 files changed, 100 insertions, 28 deletions
diff --git a/src/WixToolset.Extensibility/Data/IBindContext.cs b/src/WixToolset.Extensibility/Data/IBindContext.cs
index fd5a3ee4..ee165671 100644
--- a/src/WixToolset.Extensibility/Data/IBindContext.cs
+++ b/src/WixToolset.Extensibility/Data/IBindContext.cs
@@ -2,50 +2,109 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility.Services;
9 9
10#pragma warning disable 1591 // TODO: add documentation 10 /// <summary>
11 /// Bind context.
12 /// </summary>
11 public interface IBindContext 13 public interface IBindContext
12 { 14 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 15 /// <summary>
14 16 /// Service provider.
17 /// </summary>
18 IServiceProvider ServiceProvider { get; }
19
20 /// <summary>
21 /// Counnt of threads to use in cabbing.
22 /// </summary>
15 int CabbingThreadCount { get; set; } 23 int CabbingThreadCount { get; set; }
16 24
25 /// <summary>
26 /// Cabinet cache path.
27 /// </summary>
17 string CabCachePath { get; set; } 28 string CabCachePath { get; set; }
18 29
30 /// <summary>
31 /// Codepage for result.
32 /// </summary>
19 int Codepage { get; set; } 33 int Codepage { get; set; }
20 34
35 /// <summary>
36 /// Default compression level.
37 /// </summary>
21 CompressionLevel? DefaultCompressionLevel { get; set; } 38 CompressionLevel? DefaultCompressionLevel { get; set; }
22 39
40 /// <summary>
41 /// Delayed fields that need to be resolved again.
42 /// </summary>
23 IEnumerable<IDelayedField> DelayedFields { get; set; } 43 IEnumerable<IDelayedField> DelayedFields { get; set; }
24 44
45 /// <summary>
46 /// Embedded files to extract.
47 /// </summary>
25 IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; set; } 48 IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; set; }
26 49
50 /// <summary>
51 /// Binder extensions.
52 /// </summary>
27 IEnumerable<IBinderExtension> Extensions { get; set; } 53 IEnumerable<IBinderExtension> Extensions { get; set; }
28 54
55 /// <summary>
56 /// File system extensions.
57 /// </summary>
29 IEnumerable<IFileSystemExtension> FileSystemExtensions { get; set; } 58 IEnumerable<IFileSystemExtension> FileSystemExtensions { get; set; }
30 59
60 /// <summary>
61 /// Set of ICEs to execute.
62 /// </summary>
31 IEnumerable<string> Ices { get; set; } 63 IEnumerable<string> Ices { get; set; }
32 64
65 /// <summary>
66 /// Intermedaite folder.
67 /// </summary>
33 string IntermediateFolder { get; set; } 68 string IntermediateFolder { get; set; }
34 69
70 /// <summary>
71 /// Intermediate representation to bind.
72 /// </summary>
35 Intermediate IntermediateRepresentation { get; set; } 73 Intermediate IntermediateRepresentation { get; set; }
36 74
75 /// <summary>
76 /// Output path to bind to.
77 /// </summary>
37 string OutputPath { get; set; } 78 string OutputPath { get; set; }
38 79
80 /// <summary>
81 /// Type of PDB to create.
82 /// </summary>
39 PdbType PdbType { get; set; } 83 PdbType PdbType { get; set; }
40 84
85 /// <summary>
86 /// Output path for PDB.
87 /// </summary>
41 string PdbPath { get; set; } 88 string PdbPath { get; set; }
42 89
90 /// <summary>
91 /// Set of ICEs to skip.
92 /// </summary>
43 IEnumerable<string> SuppressIces { get; set; } 93 IEnumerable<string> SuppressIces { get; set; }
44 94
95 /// <summary>
96 /// Skip all ICEs.
97 /// </summary>
45 bool SuppressValidation { get; set; } 98 bool SuppressValidation { get; set; }
46 99
100 /// <summary>
101 /// Skip creation of output.
102 /// </summary>
47 bool SuppressLayout { get; set; } 103 bool SuppressLayout { get; set; }
48 104
105 /// <summary>
106 /// Cancellation token.
107 /// </summary>
49 CancellationToken CancellationToken { get; set; } 108 CancellationToken CancellationToken { get; set; }
50 } 109 }
51} 110}
diff --git a/src/WixToolset.Extensibility/Data/ICommandLineContext.cs b/src/WixToolset.Extensibility/Data/ICommandLineContext.cs
index fbaa84d1..d8c9469e 100644
--- a/src/WixToolset.Extensibility/Data/ICommandLineContext.cs
+++ b/src/WixToolset.Extensibility/Data/ICommandLineContext.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Extensibility.Data
8#pragma warning disable 1591 // TODO: add documentation 8#pragma warning disable 1591 // TODO: add documentation
9 public interface ICommandLineContext 9 public interface ICommandLineContext
10 { 10 {
11 IWixToolsetServiceProvider ServiceProvider { get; } 11 IServiceProvider ServiceProvider { get; }
12 12
13 IExtensionManager ExtensionManager { get; set; } 13 IExtensionManager ExtensionManager { get; set; }
14 14
diff --git a/src/WixToolset.Extensibility/Data/ICompileContext.cs b/src/WixToolset.Extensibility/Data/ICompileContext.cs
index 5da5ca84..a86fee1a 100644
--- a/src/WixToolset.Extensibility/Data/ICompileContext.cs
+++ b/src/WixToolset.Extensibility/Data/ICompileContext.cs
@@ -2,11 +2,11 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using System.Xml.Linq; 8 using System.Xml.Linq;
8 using WixToolset.Data; 9 using WixToolset.Data;
9 using WixToolset.Extensibility.Services;
10 10
11 /// <summary> 11 /// <summary>
12 /// Context provided to the compiler. 12 /// Context provided to the compiler.
@@ -16,7 +16,7 @@ namespace WixToolset.Extensibility.Data
16 /// <summary> 16 /// <summary>
17 /// Service provider made available to the compiler and its extensions. 17 /// Service provider made available to the compiler and its extensions.
18 /// </summary> 18 /// </summary>
19 IWixToolsetServiceProvider ServiceProvider { get; } 19 IServiceProvider ServiceProvider { get; }
20 20
21 /// <summary> 21 /// <summary>
22 /// Unique identifier for the compilation. 22 /// Unique identifier for the compilation.
diff --git a/src/WixToolset.Extensibility/Data/IDecompileContext.cs b/src/WixToolset.Extensibility/Data/IDecompileContext.cs
index f783a31e..63ed27d5 100644
--- a/src/WixToolset.Extensibility/Data/IDecompileContext.cs
+++ b/src/WixToolset.Extensibility/Data/IDecompileContext.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Extensibility.Data
10#pragma warning disable 1591 // TODO: add documentation 10#pragma warning disable 1591 // TODO: add documentation
11 public interface IDecompileContext 11 public interface IDecompileContext
12 { 12 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 13 IServiceProvider ServiceProvider { get; }
14 14
15 string DecompilePath { get; set; } 15 string DecompilePath { get; set; }
16 16
diff --git a/src/WixToolset.Extensibility/Data/IFileSystemContext.cs b/src/WixToolset.Extensibility/Data/IFileSystemContext.cs
index 321fa83c..2e58059a 100644
--- a/src/WixToolset.Extensibility/Data/IFileSystemContext.cs
+++ b/src/WixToolset.Extensibility/Data/IFileSystemContext.cs
@@ -9,7 +9,7 @@ namespace WixToolset.Extensibility.Data
9#pragma warning disable 1591 // TODO: add documentation 9#pragma warning disable 1591 // TODO: add documentation
10 public interface IFileSystemContext 10 public interface IFileSystemContext
11 { 11 {
12 IWixToolsetServiceProvider ServiceProvider { get; } 12 IServiceProvider ServiceProvider { get; }
13 13
14 string CabCachePath { get; set; } 14 string CabCachePath { get; set; }
15 15
diff --git a/src/WixToolset.Extensibility/Data/IInscribeContext.cs b/src/WixToolset.Extensibility/Data/IInscribeContext.cs
index 79d4d1f5..31c66aad 100644
--- a/src/WixToolset.Extensibility/Data/IInscribeContext.cs
+++ b/src/WixToolset.Extensibility/Data/IInscribeContext.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Extensibility.Data
8#pragma warning disable 1591 // TODO: add documentation 8#pragma warning disable 1591 // TODO: add documentation
9 public interface IInscribeContext 9 public interface IInscribeContext
10 { 10 {
11 IWixToolsetServiceProvider ServiceProvider { get; } 11 IServiceProvider ServiceProvider { get; }
12 12
13 string InputFilePath { get; set; } 13 string InputFilePath { get; set; }
14 14
diff --git a/src/WixToolset.Extensibility/Data/ILayoutContext.cs b/src/WixToolset.Extensibility/Data/ILayoutContext.cs
index 89d61d5c..6b6c280a 100644
--- a/src/WixToolset.Extensibility/Data/ILayoutContext.cs
+++ b/src/WixToolset.Extensibility/Data/ILayoutContext.cs
@@ -2,14 +2,14 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Extensibility.Services;
8 8
9#pragma warning disable 1591 // TODO: add documentation 9#pragma warning disable 1591 // TODO: add documentation
10 public interface ILayoutContext 10 public interface ILayoutContext
11 { 11 {
12 IWixToolsetServiceProvider ServiceProvider { get; } 12 IServiceProvider ServiceProvider { get; }
13 13
14 IEnumerable<ILayoutExtension> Extensions { get; set; } 14 IEnumerable<ILayoutExtension> Extensions { get; set; }
15 15
diff --git a/src/WixToolset.Extensibility/Data/ILibraryContext.cs b/src/WixToolset.Extensibility/Data/ILibraryContext.cs
index 68a9faa9..d6359ffc 100644
--- a/src/WixToolset.Extensibility/Data/ILibraryContext.cs
+++ b/src/WixToolset.Extensibility/Data/ILibraryContext.cs
@@ -2,15 +2,15 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility.Services;
9 9
10#pragma warning disable 1591 // TODO: add documentation 10#pragma warning disable 1591 // TODO: add documentation
11 public interface ILibraryContext 11 public interface ILibraryContext
12 { 12 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 13 IServiceProvider ServiceProvider { get; }
14 14
15 bool BindFiles { get; set; } 15 bool BindFiles { get; set; }
16 16
diff --git a/src/WixToolset.Extensibility/Data/ILinkContext.cs b/src/WixToolset.Extensibility/Data/ILinkContext.cs
index c6c9cf7d..7524d18c 100644
--- a/src/WixToolset.Extensibility/Data/ILinkContext.cs
+++ b/src/WixToolset.Extensibility/Data/ILinkContext.cs
@@ -2,15 +2,15 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility.Services;
9 9
10#pragma warning disable 1591 // TODO: add documentation 10#pragma warning disable 1591 // TODO: add documentation
11 public interface ILinkContext 11 public interface ILinkContext
12 { 12 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 13 IServiceProvider ServiceProvider { get; }
14 14
15 IEnumerable<ILinkerExtension> Extensions { get; set; } 15 IEnumerable<ILinkerExtension> Extensions { get; set; }
16 16
diff --git a/src/WixToolset.Extensibility/Data/IPreprocessContext.cs b/src/WixToolset.Extensibility/Data/IPreprocessContext.cs
index b07fb81f..c6bdfe3a 100644
--- a/src/WixToolset.Extensibility/Data/IPreprocessContext.cs
+++ b/src/WixToolset.Extensibility/Data/IPreprocessContext.cs
@@ -2,15 +2,15 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility.Services;
9 9
10#pragma warning disable 1591 // TODO: add documentation 10#pragma warning disable 1591 // TODO: add documentation
11 public interface IPreprocessContext 11 public interface IPreprocessContext
12 { 12 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 13 IServiceProvider ServiceProvider { get; }
14 14
15 IEnumerable<IPreprocessorExtension> Extensions { get; set; } 15 IEnumerable<IPreprocessorExtension> Extensions { get; set; }
16 16
diff --git a/src/WixToolset.Extensibility/Data/IResolveContext.cs b/src/WixToolset.Extensibility/Data/IResolveContext.cs
index 2c775932..79191a15 100644
--- a/src/WixToolset.Extensibility/Data/IResolveContext.cs
+++ b/src/WixToolset.Extensibility/Data/IResolveContext.cs
@@ -2,15 +2,15 @@
2 2
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
6 using System.Threading; 7 using System.Threading;
7 using WixToolset.Data; 8 using WixToolset.Data;
8 using WixToolset.Extensibility.Services;
9 9
10#pragma warning disable 1591 // TODO: add documentation 10#pragma warning disable 1591 // TODO: add documentation
11 public interface IResolveContext 11 public interface IResolveContext
12 { 12 {
13 IWixToolsetServiceProvider ServiceProvider { get; } 13 IServiceProvider ServiceProvider { get; }
14 14
15 IEnumerable<IBindPath> BindPaths { get; set; } 15 IEnumerable<IBindPath> BindPaths { get; set; }
16 16
diff --git a/src/WixToolset.Extensibility/Data/IUnbindContext.cs b/src/WixToolset.Extensibility/Data/IUnbindContext.cs
index faf77f5d..6427422f 100644
--- a/src/WixToolset.Extensibility/Data/IUnbindContext.cs
+++ b/src/WixToolset.Extensibility/Data/IUnbindContext.cs
@@ -3,12 +3,11 @@
3namespace WixToolset.Extensibility.Data 3namespace WixToolset.Extensibility.Data
4{ 4{
5 using System; 5 using System;
6 using WixToolset.Extensibility.Services;
7 6
8#pragma warning disable 1591 // TODO: add documentation 7#pragma warning disable 1591 // TODO: add documentation
9 public interface IUnbindContext 8 public interface IUnbindContext
10 { 9 {
11 IWixToolsetServiceProvider ServiceProvider { get; } 10 IServiceProvider ServiceProvider { get; }
12 11
13 string ExportBasePath { get; set; } 12 string ExportBasePath { get; set; }
14 13
diff --git a/src/WixToolset.Extensibility/Services/IWixtoolsetCoreServiceProvider.cs b/src/WixToolset.Extensibility/Services/IWixtoolsetCoreServiceProvider.cs
index 2d0450dc..f5fb28fb 100644
--- a/src/WixToolset.Extensibility/Services/IWixtoolsetCoreServiceProvider.cs
+++ b/src/WixToolset.Extensibility/Services/IWixtoolsetCoreServiceProvider.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Extensibility.Services
8 /// <summary> 8 /// <summary>
9 /// The core of the service provider used to add services to the service provider. 9 /// The core of the service provider used to add services to the service provider.
10 /// </summary> 10 /// </summary>
11 public interface IWixToolsetCoreServiceProvider : IWixToolsetServiceProvider 11 public interface IWixToolsetCoreServiceProvider : IServiceProvider
12 { 12 {
13 /// <summary> 13 /// <summary>
14 /// Adds a service to the service locator. 14 /// Adds a service to the service locator.
diff --git a/src/WixToolset.Extensibility/Services/IWixToolsetServiceProvider.cs b/src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs
index 0315f7ed..68484d09 100644
--- a/src/WixToolset.Extensibility/Services/IWixToolsetServiceProvider.cs
+++ b/src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs
@@ -5,30 +5,44 @@ namespace WixToolset.Extensibility.Services
5 using System; 5 using System;
6 6
7 /// <summary> 7 /// <summary>
8 /// Service provider. 8 /// Service provider extensions.
9 /// </summary> 9 /// </summary>
10 public interface IWixToolsetServiceProvider : IServiceProvider 10 public static class ServiceProviderExtensions
11 { 11 {
12 /// <summary> 12 /// <summary>
13 /// Gets a service from the service provider. 13 /// Gets a service from the service provider.
14 /// </summary> 14 /// </summary>
15 /// <typeparam name="T">Type of service to get.</typeparam> 15 /// <typeparam name="T">Type of service to get.</typeparam>
16 T GetService<T>() where T : class; 16 /// <param name="provider">Service provider.</param>
17 public static T GetService<T>(this IServiceProvider provider) where T : class
18 {
19 return provider.GetService(typeof(T)) as T;
20 }
17 21
18 /// <summary> 22 /// <summary>
19 /// Gets a service from the service provider. 23 /// Gets a service from the service provider.
20 /// </summary> 24 /// </summary>
25 /// <param name="provider">Service provider.</param>
21 /// <param name="serviceType">Type of service to get.</param> 26 /// <param name="serviceType">Type of service to get.</param>
22 /// <param name="service">Retrieved service.</param> 27 /// <param name="service">Retrieved service.</param>
23 /// <returns>True if the service was found, otherwise false</returns> 28 /// <returns>True if the service was found, otherwise false</returns>
24 bool TryGetService(Type serviceType, out object service); 29 public static bool TryGetService(this IServiceProvider provider, Type serviceType, out object service)
30 {
31 service = provider.GetService(serviceType);
32 return service != null;
33 }
25 34
26 /// <summary> 35 /// <summary>
27 /// Gets a service from the service provider. 36 /// Gets a service from the service provider.
28 /// </summary> 37 /// </summary>
29 /// <typeparam name="T">Type of service to get.</typeparam> 38 /// <typeparam name="T">Type of service to get.</typeparam>
39 /// <param name="provider">Service provider.</param>
30 /// <param name="service">Retrieved service.</param> 40 /// <param name="service">Retrieved service.</param>
31 /// <returns>True if the service was found, otherwise false</returns> 41 /// <returns>True if the service was found, otherwise false</returns>
32 bool TryGetService<T>(out T service) where T : class; 42 public static bool TryGetService<T>(this IServiceProvider provider, out T service) where T : class
43 {
44 service = provider.GetService(typeof(T)) as T;
45 return service != null;
46 }
33 } 47 }
34} 48}