aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Extensibility/Services
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/WixToolset.Extensibility/Services
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/WixToolset.Extensibility/Services')
-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
2 files changed, 20 insertions, 6 deletions
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}