forked from scriptcs/scriptcs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInitializationServices.cs
More file actions
76 lines (64 loc) · 2.78 KB
/
InitializationServices.cs
File metadata and controls
76 lines (64 loc) · 2.78 KB
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autofac;
using Common.Logging;
using ScriptCs.Contracts;
using ScriptCs.Hosting.Package;
using ScriptCs.Package;
namespace ScriptCs
{
public class InitializationServices : ScriptServicesRegistration, IInitializationServices
{
public InitializationServices(ILog logger, IDictionary<Type, object> overrides = null)
: base(logger, overrides)
{
}
protected override IContainer CreateContainer()
{
var builder = new ContainerBuilder();
this.Logger.Debug("Registering initialization services");
builder.RegisterInstance<ILog>(this.Logger);
builder.RegisterType<ScriptServicesBuilder>().As<IScriptServicesBuilder>();
RegisterOverrideOrDefault<IFileSystem>(builder, b => b.RegisterType<FileSystem>().As<IFileSystem>().SingleInstance());
RegisterOverrideOrDefault<IAssemblyUtility>(builder, b => b.RegisterType<AssemblyUtility>().As<IAssemblyUtility>().SingleInstance());
RegisterOverrideOrDefault<IPackageContainer>(builder, b => b.RegisterType<PackageContainer>().As<IPackageContainer>().SingleInstance());
RegisterOverrideOrDefault<IPackageAssemblyResolver>(builder, b => b.RegisterType<PackageAssemblyResolver>().As<IPackageAssemblyResolver>().SingleInstance());
RegisterOverrideOrDefault<IAssemblyResolver>(builder, b => b.RegisterType<AssemblyResolver>().As<IAssemblyResolver>().SingleInstance());
RegisterOverrideOrDefault<IModuleLoader>(builder, b => b.RegisterType<ModuleLoader>().As<IModuleLoader>().SingleInstance());
return builder.Build();
}
private IAssemblyResolver _assemblyResolver;
public IAssemblyResolver GetAssemblyResolver()
{
if (_assemblyResolver == null)
{
this.Logger.Debug("Resolving AssemblyResolver");
_assemblyResolver = Container.Resolve<IAssemblyResolver>();
}
return _assemblyResolver;
}
private IModuleLoader _moduleLoader;
public IModuleLoader GetModuleLoader()
{
if (_moduleLoader == null)
{
this.Logger.Debug("Resolving ModuleLoader");
_moduleLoader = Container.Resolve<IModuleLoader>();
}
return _moduleLoader;
}
private IFileSystem _fileSystem;
public IFileSystem GetFileSystem()
{
if (_fileSystem == null)
{
this.Logger.Debug("Resolving FileSystem");
_fileSystem = Container.Resolve<IFileSystem>();
}
return _fileSystem;
}
}
}