@@ -18,7 +18,7 @@ protected override IContainer CreateContainer()
1818 {
1919 var builder = new ContainerBuilder ( ) ;
2020 this . Logger . Debug ( "Registering initialization services" ) ;
21- builder . RegisterInstance < ILog > ( this . Logger ) ;
21+ builder . RegisterInstance ( this . Logger ) ;
2222 builder . RegisterType < ScriptServicesBuilder > ( ) . As < IScriptServicesBuilder > ( ) ;
2323 RegisterOverrideOrDefault < IFileSystem > ( builder , b => b . RegisterType < FileSystem > ( ) . As < IFileSystem > ( ) . SingleInstance ( ) ) ;
2424 RegisterOverrideOrDefault < IAssemblyUtility > ( builder , b => b . RegisterType < AssemblyUtility > ( ) . As < IAssemblyUtility > ( ) . SingleInstance ( ) ) ;
@@ -36,91 +36,67 @@ protected override IContainer CreateContainer()
3636
3737 public IAssemblyResolver GetAssemblyResolver ( )
3838 {
39- if ( _assemblyResolver == null )
40- {
41- this . Logger . Debug ( "Resolving AssemblyResolver" ) ;
42- _assemblyResolver = Container . Resolve < IAssemblyResolver > ( ) ;
43- }
44-
45- return _assemblyResolver ;
39+ return GetService ( ref _assemblyResolver ) ;
4640 }
4741
4842 private IModuleLoader _moduleLoader ;
4943
5044 public IModuleLoader GetModuleLoader ( )
5145 {
52- if ( _moduleLoader == null )
53- {
54- this . Logger . Debug ( "Resolving ModuleLoader" ) ;
55- _moduleLoader = Container . Resolve < IModuleLoader > ( ) ;
56- }
57-
58- return _moduleLoader ;
46+ return GetService ( ref _moduleLoader ) ;
5947 }
6048
6149 private IFileSystem _fileSystem ;
6250
6351 public IFileSystem GetFileSystem ( )
6452 {
65- if ( _fileSystem == null )
66- {
67- this . Logger . Debug ( "Resolving FileSystem" ) ;
68- _fileSystem = Container . Resolve < IFileSystem > ( ) ;
69- }
70-
71- return _fileSystem ;
53+ return GetService ( ref _fileSystem ) ;
7254 }
7355
7456 private IInstallationProvider _installationProvider ;
7557
7658 public IInstallationProvider GetInstallationProvider ( )
7759 {
78- if ( _installationProvider == null )
79- {
80- this . Logger . Debug ( "Resolving Installation Provider" ) ;
81- _installationProvider = Container . Resolve < IInstallationProvider > ( ) ;
82- }
83-
84- return _installationProvider ;
60+ return GetService ( ref _installationProvider ) ;
8561 }
8662
8763 private IPackageAssemblyResolver _packageAssemblyResolver ;
8864
8965 public IPackageAssemblyResolver GetPackageAssemblyResolver ( )
9066 {
91- if ( _packageAssemblyResolver == null )
92- {
93- this . Logger . Debug ( "Resolving Package Assembly Resolver" ) ;
94- _packageAssemblyResolver = Container . Resolve < IPackageAssemblyResolver > ( ) ;
95- }
96-
97- return _packageAssemblyResolver ;
67+ return GetService ( ref _packageAssemblyResolver ) ;
9868 }
9969
10070 private IPackageInstaller _packageInstaller ;
10171
10272 public IPackageInstaller GetPackageInstaller ( )
10373 {
104- if ( _packageInstaller == null )
105- {
106- this . Logger . Debug ( "Resolving Package Installer" ) ;
107- _packageInstaller = Container . Resolve < IPackageInstaller > ( ) ;
108- }
109-
110- return _packageInstaller ;
74+ return GetService ( ref _packageInstaller ) ;
11175 }
11276
11377 private IAppDomainAssemblyResolver _appDomainAssemblyResolver ;
11478
11579 public IAppDomainAssemblyResolver GetAppDomainAssemblyResolver ( )
11680 {
117- if ( _appDomainAssemblyResolver == null )
81+ return GetService ( ref _appDomainAssemblyResolver ) ;
82+ }
83+
84+ private IAssemblyUtility _assemblyUtility ;
85+
86+ public IAssemblyUtility GetAssemblyUtility ( )
87+ {
88+ return GetService ( ref _assemblyUtility ) ;
89+ }
90+
91+ private T GetService < T > ( ref T service )
92+ {
93+ if ( Equals ( service , null ) )
11894 {
119- this . Logger . Debug ( "Resolving App Domain Assembly Resolver" ) ;
120- _appDomainAssemblyResolver = Container . Resolve < IAppDomainAssemblyResolver > ( ) ;
95+ this . Logger . Debug ( string . Format ( "Resolving {0}" , typeof ( T ) . Name ) ) ;
96+ service = Container . Resolve < T > ( ) ;
12197 }
12298
123- return _appDomainAssemblyResolver ;
99+ return service ;
124100 }
125101 }
126- }
102+ }
0 commit comments