|
|
|
@ -1,25 +1,31 @@ |
|
|
|
using System; |
|
|
|
using JetBrains.Annotations; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp.Internal; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
|
|
|
|
namespace Volo.Abp |
|
|
|
{ |
|
|
|
public class AbpApplication : IDisposable |
|
|
|
public class AbpApplication |
|
|
|
{ |
|
|
|
public Type StartupModuleType { get; } |
|
|
|
|
|
|
|
public IServiceProvider ServiceProvider { get; private set; } |
|
|
|
|
|
|
|
private AbpApplication(Type startupModuleType, IServiceCollection services, Action<AbpApplicationOptions> optionsAction) |
|
|
|
private AbpApplication( |
|
|
|
[NotNull] Type startupModuleType, |
|
|
|
[NotNull] IServiceCollection services, |
|
|
|
[CanBeNull] Action<AbpApplicationCreationOptions> optionsAction) |
|
|
|
{ |
|
|
|
StartupModuleType = startupModuleType; |
|
|
|
Check.NotNull(startupModuleType, nameof(startupModuleType)); |
|
|
|
Check.NotNull(services, nameof(services)); |
|
|
|
|
|
|
|
var options = new AbpApplicationOptions(); |
|
|
|
StartupModuleType = startupModuleType; |
|
|
|
|
|
|
|
var options = new AbpApplicationCreationOptions(); |
|
|
|
optionsAction?.Invoke(options); |
|
|
|
|
|
|
|
AddServices(services); |
|
|
|
services.AddCoreAbpServices(this); |
|
|
|
LoadModules(services, options); |
|
|
|
} |
|
|
|
|
|
|
|
@ -31,34 +37,49 @@ namespace Volo.Abp |
|
|
|
|
|
|
|
public static AbpApplication Create<TStartupModule>( |
|
|
|
[NotNull] IServiceCollection services, |
|
|
|
[CanBeNull] Action<AbpApplicationOptions> optionsAction) |
|
|
|
[CanBeNull] Action<AbpApplicationCreationOptions> optionsAction) |
|
|
|
where TStartupModule : IAbpModule |
|
|
|
{ |
|
|
|
Check.NotNull(services, nameof(services)); |
|
|
|
|
|
|
|
return new AbpApplication(typeof(TStartupModule), services, optionsAction); |
|
|
|
} |
|
|
|
|
|
|
|
public void Initialize(IServiceProvider serviceProvider) |
|
|
|
public static AbpApplication Create( |
|
|
|
[NotNull] Type startupModuleType, |
|
|
|
[NotNull] IServiceCollection services) |
|
|
|
{ |
|
|
|
ServiceProvider = serviceProvider; |
|
|
|
ServiceProvider.GetRequiredService<IModuleManager>().Initialize(); |
|
|
|
return Create(startupModuleType, services, null); |
|
|
|
} |
|
|
|
|
|
|
|
private void AddServices(IServiceCollection services) |
|
|
|
public static AbpApplication Create( |
|
|
|
[NotNull] Type startupModuleType, |
|
|
|
[NotNull] IServiceCollection services, |
|
|
|
[CanBeNull] Action<AbpApplicationCreationOptions> optionsAction) |
|
|
|
{ |
|
|
|
services.AddSingleton(this); |
|
|
|
services.AddCoreAbpServices(); |
|
|
|
return new AbpApplication(startupModuleType, services, optionsAction); |
|
|
|
} |
|
|
|
|
|
|
|
private void LoadModules(IServiceCollection services, AbpApplicationOptions options) |
|
|
|
public void Initialize([NotNull] IServiceProvider serviceProvider) |
|
|
|
{ |
|
|
|
services.GetSingletonInstance<IModuleLoader>().LoadAll(services, StartupModuleType, options.PlugInSources); |
|
|
|
Check.NotNull(serviceProvider, nameof(serviceProvider)); |
|
|
|
|
|
|
|
ServiceProvider = serviceProvider; |
|
|
|
ServiceProvider.GetRequiredService<IModuleInitializationManager>().InitializeModules(); |
|
|
|
} |
|
|
|
|
|
|
|
public void Dispose() |
|
|
|
private void LoadModules(IServiceCollection services, AbpApplicationCreationOptions options) |
|
|
|
{ |
|
|
|
services |
|
|
|
.GetSingletonInstance<IModuleLoader>() |
|
|
|
.LoadAll( |
|
|
|
services, |
|
|
|
StartupModuleType, |
|
|
|
options.PlugInSources |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
public void Shutdown() |
|
|
|
{ |
|
|
|
//TODO: Shutdown modules
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|