diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IRootServiceProviderAccessor.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IRootServiceProviderAccessor.cs index cb22e45287..8a3c1d09a5 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IRootServiceProviderAccessor.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IRootServiceProviderAccessor.cs @@ -1,12 +1,14 @@ -namespace Volo.Abp.DependencyInjection; +using System; + +namespace Volo.Abp.DependencyInjection; /// -/// Gets the root service provider of the application. +/// The root service provider of the application. /// Be careful to use the root service provider since there is no way /// to release/dispose objects resolved from the root service provider. /// So, always create a new scope if you need to resolve any service. /// -public interface IRootServiceProviderAccessor : IServiceProviderAccessor +public interface IRootServiceProvider : IServiceProvider { } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProvider.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProvider.cs new file mode 100644 index 0000000000..cbb6fb8984 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProvider.cs @@ -0,0 +1,19 @@ +using System; + +namespace Volo.Abp.DependencyInjection; + +[ExposeServices(typeof(IRootServiceProvider))] +public class RootServiceProvider : IRootServiceProvider, ISingletonDependency +{ + protected IServiceProvider ServiceProvider { get; } + + public RootServiceProvider(IObjectAccessor objectAccessor) + { + ServiceProvider = objectAccessor.Value; + } + + public virtual object GetService(Type serviceType) + { + return ServiceProvider.GetService(serviceType); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProviderAccessor.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProviderAccessor.cs deleted file mode 100644 index 1f0639be12..0000000000 --- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/RootServiceProviderAccessor.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace Volo.Abp.DependencyInjection; - -[ExposeServices(typeof(IRootServiceProviderAccessor))] -public class RootServiceProviderAccessor : IRootServiceProviderAccessor, ISingletonDependency -{ - public IServiceProvider ServiceProvider { get; } - - public RootServiceProviderAccessor(IObjectAccessor objectAccessor) - { - ServiceProvider = objectAccessor.Value; - } -} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs index f51cb8d573..60f5028caa 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs @@ -165,12 +165,11 @@ public class AbpApplication_Initialize_Tests using (var application = await AbpApplicationFactory.CreateAsync()) { await application.InitializeAsync(); - + application .ServiceProvider - .GetRequiredService() - .ServiceProvider - .ShouldBeSameAs(application.ServiceProvider); + .GetRequiredService() + .ShouldNotBeNull(); } } }