diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-03-14 11:17:20 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-03-14 11:28:04 -0700 |
| commit | 9aae370eee18b4c87300f333fa52f3cd0d7f34d1 (patch) | |
| tree | 27aae273837bb9041e7d509c410910a6df05796c /src/WixToolset.Extensibility/Services | |
| parent | f4af6bf27abaaac7f0508ce2beafb31b5a64b53f (diff) | |
| download | wix-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.cs | 2 | ||||
| -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 | } |
