blob: a018b8dca2967827e24d88e4a8714d88d79b7e94 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
// 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.
namespace WixToolset.Core
{
using System;
using WixToolset.Core.CommandLine;
using WixToolset.Core.ExtensibilityServices;
using WixToolset.Data;
using WixToolset.Extensibility;
using WixToolset.Extensibility.Services;
public class WixToolsetServiceProvider : IServiceProvider
{
private ExtensionManager extensionManager;
private Messaging messaging;
private ParseHelper parseHelper;
private PreprocessHelper preprocessHelper;
private TupleDefinitionCreator tupleDefinitionCreator;
private WindowsInstallerBackendHelper windowsInstallerBackendHelper;
public object GetService(Type serviceType)
{
if (serviceType == null) throw new ArgumentNullException(nameof(serviceType));
// Transients.
if (serviceType == typeof(IPreprocessContext))
{
return new PreprocessContext(this);
}
if (serviceType == typeof(ICompileContext))
{
return new CompileContext(this);
}
if (serviceType == typeof(ILinkContext))
{
return new LinkContext(this);
}
if (serviceType == typeof(IBindContext))
{
return new BindContext(this);
}
if (serviceType == typeof(ILayoutContext))
{
return new LayoutContext(this);
}
if (serviceType == typeof(IResolveContext))
{
return new ResolveContext(this);
}
if (serviceType == typeof(IInscribeContext))
{
return new InscribeContext(this);
}
if (serviceType == typeof(ICommandLineContext))
{
return new CommandLineContext(this);
}
if (serviceType == typeof(ICommandLine))
{
return new CommandLineParser();
}
// Singletons.
if (serviceType == typeof(IExtensionManager))
{
return this.extensionManager = this.extensionManager ?? new ExtensionManager();
}
if (serviceType == typeof(IMessaging))
{
return this.messaging = this.messaging ?? new Messaging();
}
if (serviceType == typeof(ITupleDefinitionCreator))
{
return this.tupleDefinitionCreator = this.tupleDefinitionCreator ?? new TupleDefinitionCreator(this);
}
if (serviceType == typeof(IParseHelper))
{
return this.parseHelper = this.parseHelper ?? new ParseHelper(this);
}
if (serviceType == typeof(IPreprocessHelper))
{
return this.preprocessHelper = this.preprocessHelper ?? new PreprocessHelper(this);
}
if (serviceType == typeof(IWindowsInstallerBackendHelper))
{
return this.windowsInstallerBackendHelper = this.windowsInstallerBackendHelper ?? new WindowsInstallerBackendHelper(this);
}
throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));
}
}
}
|