mirror of https://github.com/abpframework/abp.git
16 changed files with 157 additions and 95 deletions
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class ApplicationShutdownContext |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -1,23 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class DefaultModuleInitializer : IModuleInitializer |
|||
{ |
|||
private readonly IServiceProvider _serviceProvider; |
|||
|
|||
public DefaultModuleInitializer(IServiceProvider serviceProvider) |
|||
{ |
|||
_serviceProvider = serviceProvider; |
|||
} |
|||
|
|||
public void Initialize(IAbpModule module) |
|||
{ |
|||
var context = new ApplicationInitializationContext( |
|||
_serviceProvider |
|||
); |
|||
|
|||
(module as IOnApplicationInitialization)?.OnApplicationInitialization(context); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class DefaultModuleLifecycleContributer : ModuleLifecycleContributerBase |
|||
{ |
|||
private readonly IServiceProvider _serviceProvider; |
|||
|
|||
public DefaultModuleLifecycleContributer(IServiceProvider serviceProvider) |
|||
{ |
|||
_serviceProvider = serviceProvider; |
|||
} |
|||
|
|||
public override void Initialize(IAbpModule module) |
|||
{ |
|||
var context = new ApplicationInitializationContext( |
|||
_serviceProvider |
|||
); |
|||
|
|||
(module as IOnApplicationInitialization)?.OnApplicationInitialization(context); |
|||
} |
|||
|
|||
public override void Shutdown(IAbpModule module) |
|||
{ |
|||
var context = new ApplicationShutdownContext(); |
|||
|
|||
(module as IOnApplicationShutdown)?.OnApplicationShutdown(context); |
|||
} |
|||
} |
|||
} |
|||
@ -1,7 +1,9 @@ |
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public interface IModuleInitializationManager |
|||
public interface IModuleLifecycleManager |
|||
{ |
|||
void InitializeModules(); |
|||
|
|||
void ShutdownModules(); |
|||
} |
|||
} |
|||
@ -1,7 +1,9 @@ |
|||
namespace Volo.Abp.Modularity |
|||
using JetBrains.Annotations; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public interface IOnApplicationInitialization |
|||
{ |
|||
void OnApplicationInitialization(ApplicationInitializationContext context); |
|||
void OnApplicationInitialization([NotNull] ApplicationInitializationContext context); |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using JetBrains.Annotations; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public interface IOnApplicationShutdown |
|||
{ |
|||
void OnApplicationShutdown([NotNull] ApplicationShutdownContext context); |
|||
} |
|||
} |
|||
@ -1,28 +0,0 @@ |
|||
using System.Collections.Generic; |
|||
using Volo.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class ModuleInitializationManager : IModuleInitializationManager, ISingletonDependency |
|||
{ |
|||
private readonly IModuleLoader _moduleLoader; |
|||
private readonly IEnumerable<IModuleInitializer> _initializers; |
|||
|
|||
public ModuleInitializationManager(IModuleLoader moduleLoader, IEnumerable<IModuleInitializer> initializers) |
|||
{ |
|||
_moduleLoader = moduleLoader; |
|||
_initializers = initializers; |
|||
} |
|||
|
|||
public void InitializeModules() |
|||
{ |
|||
foreach (var initializer in _initializers) |
|||
{ |
|||
foreach (var module in _moduleLoader.Modules) |
|||
{ |
|||
initializer.Initialize(module.Instance); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public abstract class ModuleLifecycleContributerBase : IModuleLifecycleContributer |
|||
{ |
|||
public virtual void Initialize(IAbpModule module) |
|||
{ |
|||
} |
|||
|
|||
public virtual void Shutdown(IAbpModule module) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,39 @@ |
|||
using System.Collections.Generic; |
|||
using Volo.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class ModuleLifecycleManager : IModuleLifecycleManager, ISingletonDependency |
|||
{ |
|||
private readonly IModuleLoader _moduleLoader; |
|||
private readonly IEnumerable<IModuleLifecycleContributer> _contributers; |
|||
|
|||
public ModuleLifecycleManager(IModuleLoader moduleLoader, IEnumerable<IModuleLifecycleContributer> contributers) |
|||
{ |
|||
_moduleLoader = moduleLoader; |
|||
_contributers = contributers; |
|||
} |
|||
|
|||
public void InitializeModules() |
|||
{ |
|||
foreach (var contributer in _contributers) |
|||
{ |
|||
foreach (var module in _moduleLoader.Modules) |
|||
{ |
|||
contributer.Initialize(module.Instance); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public void ShutdownModules() |
|||
{ |
|||
foreach (var contributer in _contributers) |
|||
{ |
|||
foreach (var module in _moduleLoader.Modules) |
|||
{ |
|||
contributer.Shutdown(module.Instance); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,21 +1,7 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class IndependentEmptyModule : AbpModule |
|||
public class IndependentEmptyModule : TestModuleBase |
|||
{ |
|||
public bool ConfigureServicesIsCalled { get; set; } |
|||
|
|||
public bool OnApplicationInitializeIsCalled { get; set; } |
|||
|
|||
public override void ConfigureServices(IServiceCollection services) |
|||
{ |
|||
ConfigureServicesIsCalled = true; |
|||
} |
|||
|
|||
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|||
{ |
|||
OnApplicationInitializeIsCalled = true; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
@ -1,21 +1,7 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class IndependentEmptyPlugInModule : AbpModule |
|||
public class IndependentEmptyPlugInModule : TestModuleBase |
|||
{ |
|||
public bool ConfigureServicesIsCalled { get; set; } |
|||
|
|||
public bool OnApplicationInitializeIsCalled { get; set; } |
|||
|
|||
public override void ConfigureServices(IServiceCollection services) |
|||
{ |
|||
ConfigureServicesIsCalled = true; |
|||
} |
|||
|
|||
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|||
{ |
|||
OnApplicationInitializeIsCalled = true; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Modularity |
|||
{ |
|||
public class TestModuleBase : AbpModule |
|||
{ |
|||
public bool ConfigureServicesIsCalled { get; set; } |
|||
|
|||
public bool OnApplicationInitializeIsCalled { get; set; } |
|||
|
|||
public bool OnApplicationShutdownIsCalled { get; set; } |
|||
|
|||
public override void ConfigureServices(IServiceCollection services) |
|||
{ |
|||
ConfigureServicesIsCalled = true; |
|||
} |
|||
|
|||
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|||
{ |
|||
OnApplicationInitializeIsCalled = true; |
|||
} |
|||
|
|||
public override void OnApplicationShutdown(ApplicationShutdownContext context) |
|||
{ |
|||
OnApplicationShutdownIsCalled = true; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue