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