diff --git a/src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs b/src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs index 05a4f4858f..fab912f73e 100644 --- a/src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs +++ b/src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs @@ -4,7 +4,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Volo.Abp.Modularity { - public abstract class AbpModule : IAbpModule, IOnApplicationInitialization, IOnApplicationShutdown, IPreConfigureServices + public abstract class AbpModule : IAbpModule, IOnApplicationInitialization, IOnApplicationShutdown, IPreConfigureServices, IPostConfigureServices { public virtual void PreConfigureServices(IServiceCollection services) { @@ -16,6 +16,11 @@ namespace Volo.Abp.Modularity } + public virtual void PostConfigureServices(IServiceCollection services) + { + + } + public virtual void OnApplicationInitialization(ApplicationInitializationContext context) { diff --git a/src/Volo.Abp/Volo/Abp/Modularity/IPostConfigureServices.cs b/src/Volo.Abp/Volo/Abp/Modularity/IPostConfigureServices.cs new file mode 100644 index 0000000000..f28e78096e --- /dev/null +++ b/src/Volo.Abp/Volo/Abp/Modularity/IPostConfigureServices.cs @@ -0,0 +1,9 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace Volo.Abp.Modularity +{ + public interface IPostConfigureServices + { + void PostConfigureServices(IServiceCollection services); + } +} \ No newline at end of file diff --git a/src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs b/src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs index 7b2aa2e7c3..79d34264b1 100644 --- a/src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs +++ b/src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs @@ -90,6 +90,12 @@ namespace Volo.Abp.Modularity { module.Instance.ConfigureServices(services); } + + //IPostConfigureServices + foreach (var module in modules.Where(m => m.Instance is IPostConfigureServices)) + { + ((IPostConfigureServices)module.Instance).PostConfigureServices(services); + } } protected virtual void SetModuleDependencies(List modules, AbpModuleDescriptor module) diff --git a/test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs b/test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs index 462f8e05bb..b6f5bf5f9c 100644 --- a/test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs +++ b/test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs @@ -19,6 +19,7 @@ namespace Volo.Abp var module = services.GetSingletonInstance(); module.PreConfigureServicesIsCalled.ShouldBeTrue(); module.ConfigureServicesIsCalled.ShouldBeTrue(); + module.PostConfigureServicesIsCalled.ShouldBeTrue(); using (var scope = services.BuildServiceProvider().CreateScope()) { @@ -53,6 +54,7 @@ namespace Volo.Abp var plugInModule = services.GetSingletonInstance(); plugInModule.PreConfigureServicesIsCalled.ShouldBeTrue(); plugInModule.ConfigureServicesIsCalled.ShouldBeTrue(); + plugInModule.PostConfigureServicesIsCalled.ShouldBeTrue(); //Act application.Initialize(services.BuildServiceProvider()); diff --git a/test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs b/test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs index 5bce9a247f..fef7f85e09 100644 --- a/test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs +++ b/test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs @@ -8,6 +8,8 @@ namespace Volo.Abp.Modularity public bool ConfigureServicesIsCalled { get; set; } + public bool PostConfigureServicesIsCalled { get; set; } + public bool OnApplicationInitializeIsCalled { get; set; } public bool OnApplicationShutdownIsCalled { get; set; } @@ -22,6 +24,11 @@ namespace Volo.Abp.Modularity ConfigureServicesIsCalled = true; } + public override void PostConfigureServices(IServiceCollection services) + { + PostConfigureServicesIsCalled = true; + } + public override void OnApplicationInitialization(ApplicationInitializationContext context) { OnApplicationInitializeIsCalled = true;