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 |
namespace Volo.Abp.Modularity |
||||
{ |
{ |
||||
public interface IModuleInitializationManager |
public interface IModuleLifecycleManager |
||||
{ |
{ |
||||
void InitializeModules(); |
void InitializeModules(); |
||||
|
|
||||
|
void ShutdownModules(); |
||||
} |
} |
||||
} |
} |
||||
@ -1,7 +1,9 @@ |
|||||
namespace Volo.Abp.Modularity |
using JetBrains.Annotations; |
||||
|
|
||||
|
namespace Volo.Abp.Modularity |
||||
{ |
{ |
||||
public interface IOnApplicationInitialization |
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