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/ServiceProviderExtensions.cs | |
| 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/ServiceProviderExtensions.cs')
| -rw-r--r-- | src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs b/src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs new file mode 100644 index 00000000..68484d09 --- /dev/null +++ b/src/WixToolset.Extensibility/Services/ServiceProviderExtensions.cs | |||
| @@ -0,0 +1,48 @@ | |||
| 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.Extensibility.Services | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | |||
| 7 | /// <summary> | ||
| 8 | /// Service provider extensions. | ||
| 9 | /// </summary> | ||
| 10 | public static class ServiceProviderExtensions | ||
| 11 | { | ||
| 12 | /// <summary> | ||
| 13 | /// Gets a service from the service provider. | ||
| 14 | /// </summary> | ||
| 15 | /// <typeparam name="T">Type of service to get.</typeparam> | ||
| 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 | } | ||
| 21 | |||
| 22 | /// <summary> | ||
| 23 | /// Gets a service from the service provider. | ||
| 24 | /// </summary> | ||
| 25 | /// <param name="provider">Service provider.</param> | ||
| 26 | /// <param name="serviceType">Type of service to get.</param> | ||
| 27 | /// <param name="service">Retrieved service.</param> | ||
| 28 | /// <returns>True if the service was found, otherwise false</returns> | ||
| 29 | public static bool TryGetService(this IServiceProvider provider, Type serviceType, out object service) | ||
| 30 | { | ||
| 31 | service = provider.GetService(serviceType); | ||
| 32 | return service != null; | ||
| 33 | } | ||
| 34 | |||
| 35 | /// <summary> | ||
| 36 | /// Gets a service from the service provider. | ||
| 37 | /// </summary> | ||
| 38 | /// <typeparam name="T">Type of service to get.</typeparam> | ||
| 39 | /// <param name="provider">Service provider.</param> | ||
| 40 | /// <param name="service">Retrieved service.</param> | ||
| 41 | /// <returns>True if the service was found, otherwise false</returns> | ||
| 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 | } | ||
| 47 | } | ||
| 48 | } | ||
