Browse Source

Resolved #65: Create PostConfigureServices method for AbpModule.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
ecd75464b2
  1. 7
      src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs
  2. 9
      src/Volo.Abp/Volo/Abp/Modularity/IPostConfigureServices.cs
  3. 6
      src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs
  4. 2
      test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs
  5. 7
      test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs

7
src/Volo.Abp/Volo/Abp/Modularity/AbpModule.cs

@ -4,7 +4,7 @@ using Microsoft.Extensions.DependencyInjection;
namespace Volo.Abp.Modularity 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) 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) public virtual void OnApplicationInitialization(ApplicationInitializationContext context)
{ {

9
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);
}
}

6
src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs

@ -90,6 +90,12 @@ namespace Volo.Abp.Modularity
{ {
module.Instance.ConfigureServices(services); 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<AbpModuleDescriptor> modules, AbpModuleDescriptor module) protected virtual void SetModuleDependencies(List<AbpModuleDescriptor> modules, AbpModuleDescriptor module)

2
test/Volo.Abp.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs

@ -19,6 +19,7 @@ namespace Volo.Abp
var module = services.GetSingletonInstance<IndependentEmptyModule>(); var module = services.GetSingletonInstance<IndependentEmptyModule>();
module.PreConfigureServicesIsCalled.ShouldBeTrue(); module.PreConfigureServicesIsCalled.ShouldBeTrue();
module.ConfigureServicesIsCalled.ShouldBeTrue(); module.ConfigureServicesIsCalled.ShouldBeTrue();
module.PostConfigureServicesIsCalled.ShouldBeTrue();
using (var scope = services.BuildServiceProvider().CreateScope()) using (var scope = services.BuildServiceProvider().CreateScope())
{ {
@ -53,6 +54,7 @@ namespace Volo.Abp
var plugInModule = services.GetSingletonInstance<IndependentEmptyPlugInModule>(); var plugInModule = services.GetSingletonInstance<IndependentEmptyPlugInModule>();
plugInModule.PreConfigureServicesIsCalled.ShouldBeTrue(); plugInModule.PreConfigureServicesIsCalled.ShouldBeTrue();
plugInModule.ConfigureServicesIsCalled.ShouldBeTrue(); plugInModule.ConfigureServicesIsCalled.ShouldBeTrue();
plugInModule.PostConfigureServicesIsCalled.ShouldBeTrue();
//Act //Act
application.Initialize(services.BuildServiceProvider()); application.Initialize(services.BuildServiceProvider());

7
test/Volo.Abp.Tests/Volo/Abp/Modularity/TestModuleBase.cs

@ -8,6 +8,8 @@ namespace Volo.Abp.Modularity
public bool ConfigureServicesIsCalled { get; set; } public bool ConfigureServicesIsCalled { get; set; }
public bool PostConfigureServicesIsCalled { get; set; }
public bool OnApplicationInitializeIsCalled { get; set; } public bool OnApplicationInitializeIsCalled { get; set; }
public bool OnApplicationShutdownIsCalled { get; set; } public bool OnApplicationShutdownIsCalled { get; set; }
@ -22,6 +24,11 @@ namespace Volo.Abp.Modularity
ConfigureServicesIsCalled = true; ConfigureServicesIsCalled = true;
} }
public override void PostConfigureServices(IServiceCollection services)
{
PostConfigureServicesIsCalled = true;
}
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
OnApplicationInitializeIsCalled = true; OnApplicationInitializeIsCalled = true;

Loading…
Cancel
Save