Browse Source

Added ability to set/create service provider without initializing the ABP application.

pull/8859/head
Halil İbrahim Kalkan 5 years ago
parent
commit
78a47a81c0
  1. 19
      framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs
  2. 13
      framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithInternalServiceProvider.cs
  3. 10
      framework/src/Volo.Abp.Core/Volo/Abp/IAbpApplicationWithExternalServiceProvider.cs
  4. 15
      framework/src/Volo.Abp.Core/Volo/Abp/IAbpApplicationWithInternalServiceProvider.cs

19
framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithExternalServiceProvider.cs

@ -18,7 +18,24 @@ namespace Volo.Abp
services.AddSingleton<IAbpApplicationWithExternalServiceProvider>(this);
}
public void Initialize(IServiceProvider serviceProvider)
void IAbpApplicationWithExternalServiceProvider.SetServiceProvider([NotNull] IServiceProvider serviceProvider)
{
Check.NotNull(serviceProvider, nameof(serviceProvider));
if (ServiceProvider != null)
{
if (ServiceProvider != serviceProvider)
{
throw new AbpException("Service provider was already set before to another service provider instance.");
}
return;
}
SetServiceProvider(serviceProvider);
}
public void Initialize([NotNull] IServiceProvider serviceProvider)
{
Check.NotNull(serviceProvider, nameof(serviceProvider));

13
framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationWithInternalServiceProvider.cs

@ -31,11 +31,22 @@ namespace Volo.Abp
Services.AddSingleton<IAbpApplicationWithInternalServiceProvider>(this);
}
public void Initialize()
public IServiceProvider CreateServiceProvider()
{
if (ServiceProvider != null)
{
return ServiceProvider;
}
ServiceScope = Services.BuildServiceProviderFromFactory().CreateScope();
SetServiceProvider(ServiceScope.ServiceProvider);
return ServiceProvider;
}
public void Initialize()
{
CreateServiceProvider();
InitializeModules();
}

10
framework/src/Volo.Abp.Core/Volo/Abp/IAbpApplicationWithExternalServiceProvider.cs

@ -5,6 +5,16 @@ namespace Volo.Abp
{
public interface IAbpApplicationWithExternalServiceProvider : IAbpApplication
{
/// <summary>
/// Sets the service provider, but not initializes the modules.
/// </summary>
void SetServiceProvider([NotNull] IServiceProvider serviceProvider);
/// <summary>
/// Sets the service provider and initializes all the modules.
/// If <see cref="SetServiceProvider"/> was called before, the same
/// <see cref="serviceProvider"/> instance should be passed to this method.
/// </summary>
void Initialize([NotNull] IServiceProvider serviceProvider);
}
}

15
framework/src/Volo.Abp.Core/Volo/Abp/IAbpApplicationWithInternalServiceProvider.cs

@ -1,7 +1,20 @@
namespace Volo.Abp
using System;
namespace Volo.Abp
{
public interface IAbpApplicationWithInternalServiceProvider : IAbpApplication
{
/// <summary>
/// Creates the service provider, but not initializes the modules.
/// Multiple calls returns the same service provider without creating again.
/// </summary>
IServiceProvider CreateServiceProvider();
/// <summary>
/// Creates the service provider and initializes all the modules.
/// If <see cref="CreateServiceProvider"/> method was called before,
/// it does not re-create it, but uses the previous one.
/// </summary>
void Initialize();
}
}
Loading…
Cancel
Save