main
cs 39 lines 1.61 KB
Raw
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.ExtensionCache
4 {
5 using System;
6 using System.Collections.Generic;
7 using WixToolset.Extensibility.Services;
8
9 /// <summary>
10 /// Extensions methods for adding ExtensionCache services.
11 /// </summary>
12 public static class WixToolsetCoreServiceProviderExtensions
13 {
14 /// <summary>
15 /// Adds ExtensionCache services.
16 /// </summary>
17 /// <param name="coreProvider"></param>
18 /// <returns></returns>
19 public static IWixToolsetCoreServiceProvider AddExtensionCacheManager(this IWixToolsetCoreServiceProvider coreProvider)
20 {
21 var extensionManager = coreProvider.GetService<IExtensionManager>();
22 extensionManager.Add(typeof(ExtensionCacheManagerExtensionFactory).Assembly);
23
24 coreProvider.AddService(CreateExtensionCacheManager);
25 return coreProvider;
26 }
27
28 private static ExtensionCacheManager CreateExtensionCacheManager(IWixToolsetCoreServiceProvider coreProvider, Dictionary<Type, object> singletons)
29 {
30 var messaging = coreProvider.GetService<IMessaging>();
31 var extensionManager = coreProvider.GetService<IExtensionManager>();
32
33 var extensionCacheManager = new ExtensionCacheManager(messaging, extensionManager);
34 singletons.Add(typeof(ExtensionCacheManager), extensionCacheManager);
35
36 return extensionCacheManager;
37 }
38 }
39 }