diff --git a/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/DefaultTypeProvider.cs b/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/DefaultTypeProvider.cs
index 2f78931d9..b9784253a 100644
--- a/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/DefaultTypeProvider.cs
+++ b/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/DefaultTypeProvider.cs
@@ -48,11 +48,13 @@ public virtual List<Type> GetImplementationTypes(List<Type> types, Type serviceT
     public virtual List<Type> GetServiceTypes(List<Type> types, Type interfaceType)
     {
         var interfaceServiceTypes = types.Where(t => t.IsInterface && t != interfaceType && interfaceType.IsAssignableFrom(t));
-        return types.Where(type
-                => IsAssignableFrom(interfaceType, type) && !type.GetInterfaces().Any(t => interfaceServiceTypes.Contains(t)) &&
-                !IsSkip(type))
-            .Concat(interfaceServiceTypes)
-            .ToList();
+        var classServiceTypes = types.Where(type
+            => IsAssignableFrom(interfaceType, type) &&
+            !interfaceServiceTypes.Any(t => IsAssignableFrom(t, type)) &&
+            !IsSkip(type));
+
+        var list = new List<Type>(interfaceServiceTypes).Concat(classServiceTypes);
+        return list.ToList();
     }
 
     public virtual bool IsSkip(Type type)
diff --git a/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/IScopedDependency.cs b/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/IScopedDependency.cs
index 75d0c6b21..9eb93ba06 100644
--- a/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/IScopedDependency.cs
+++ b/src/Utils/Extensions/Masa.Utils.Extensions.DependencyInjection/IScopedDependency.cs
@@ -6,16 +6,3 @@ namespace Microsoft.Extensions.DependencyInjection;
 public interface IScopedDependency
 {
 }
-
-
-public interface ITestService<T> : IScopedDependency
-    where T : class
-{
-
-}
-
-public class TestSerice<T> : ITestService<T>
-    where T : class
-{
-
-}
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/DependencyInjectionTest.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/DependencyInjectionTest.cs
index a5aade41f..62fc98573 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/DependencyInjectionTest.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/DependencyInjectionTest.cs
@@ -1,8 +1,6 @@
 // Copyright (c) MASA Stack All rights reserved.
 // Licensed under the MIT License. See LICENSE.txt in the project root for license information.
 
-using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Models;
-
 namespace Masa.Utils.Extensions.DependencyInjection.Tests;
 
 [TestClass]
@@ -32,12 +30,19 @@ public void TestSkip()
     }
 
     [TestMethod]
-    public void TestGetServiceTypesReturnCountIs5()
+    public void TestGetServiceTypesBySingletonReturnCountIs5()
     {
         var serviceTypes = _typeProvider.GetServiceTypes(_allTypes.ToList(), typeof(ISingletonDependency));
         Assert.IsTrue(serviceTypes.Count == 5);
     }
 
+    [TestMethod]
+    public void TestGetServiceTypesByScopedReturnCountIs3()
+    {
+        var serviceTypes = _typeProvider.GetServiceTypes(_allTypes.ToList(), typeof(IScopedDependency));
+        Assert.IsTrue(serviceTypes.Count == 3);
+    }
+
     [TestMethod]
     public void TestGetImplementationTypesReturnCountIs1()
     {
@@ -71,10 +76,13 @@ public void TestAssignableFrom()
         Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(RepositoryBase<>), typeof(IRepository<>)));
         Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(RepositoryBase<User>), typeof(IRepository<User>)));
 
-        Assert.IsTrue(_typeProvider.IsAssignableFrom(typeof(IRepository<,>), typeof(UserRepository<>)));
-        Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(IRepository<UserDbContext, User>), typeof(UserRepository<>)));
-        Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(UserRepository<>), typeof(IRepository<,>)));
-        Assert.IsTrue(_typeProvider.IsAssignableFrom(typeof(IRepository<UserDbContext, User>), typeof(UserRepository<User>)));
+        Assert.IsTrue(_typeProvider.IsAssignableFrom(typeof(IRepository<,>), typeof(RepositoryBase<,>)));
+        Assert.IsTrue(_typeProvider.IsAssignableFrom(typeof(IRepository<,>), typeof(TestRepository<>)));
+        Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(IRepository<UserDbContext, User>), typeof(RepositoryBase<>)));
+        Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(IRepository<UserDbContext, User>), typeof(UserRepository)));
+        Assert.IsFalse(_typeProvider.IsAssignableFrom(typeof(RepositoryBase<,>), typeof(IRepository<,>)));
+        Assert.IsTrue(_typeProvider.IsAssignableFrom(typeof(IRepository<UserDbContext, User>),
+            typeof(RepositoryBase<UserDbContext, User>)));
     }
 
     [TestMethod]
@@ -100,10 +108,10 @@ public void TestAssignableTo()
         Assert.IsTrue(_typeProvider.IsAssignableTo(typeof(RepositoryBase<>), typeof(IRepository<>)));
         Assert.IsTrue(_typeProvider.IsAssignableTo(typeof(RepositoryBase<User>), typeof(IRepository<User>)));
 
-        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<,>), typeof(UserRepository<>)));
-        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<UserDbContext, User>), typeof(UserRepository<>)));
-        Assert.IsTrue(_typeProvider.IsAssignableTo(typeof(UserRepository<>), typeof(IRepository<,>)));
-        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<UserDbContext, User>), typeof(UserRepository<User>)));
+        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<,>), typeof(RepositoryBase<,>)));
+        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<UserDbContext, User>), typeof(RepositoryBase<,>)));
+        Assert.IsTrue(_typeProvider.IsAssignableTo(typeof(RepositoryBase<,>), typeof(IRepository<,>)));
+        Assert.IsFalse(_typeProvider.IsAssignableTo(typeof(IRepository<UserDbContext, User>), typeof(RepositoryBase<,>)));
     }
 
     [TestMethod]
@@ -161,6 +169,12 @@ public void TestAddAutoInjectMultiReturnCountIs1()
         var serviceProvider = services.BuildServiceProvider();
         Assert.IsNotNull(serviceProvider.GetService<IRepository<User>>());
         Assert.IsTrue(serviceProvider.GetServices<IRepository<User>>().Count() == 1);
+
+        Assert.IsNull(serviceProvider.GetService<Repository<User>>());
+        Assert.IsNull(serviceProvider.GetService<RepositoryBase<UserDbContext, User>>());
+        Assert.IsNull(serviceProvider.GetService<UserRepository>());
+        Assert.IsNotNull(serviceProvider.GetService<IUserRepository>());
+        Assert.IsNull(serviceProvider.GetService<UserRepository>());
     }
 
     [TestMethod]
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Domain/Repositories/IUserRepository.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Domain/Repositories/IUserRepository.cs
new file mode 100644
index 000000000..c411e846f
--- /dev/null
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Domain/Repositories/IUserRepository.cs
@@ -0,0 +1,9 @@
+// Copyright (c) MASA Stack All rights reserved.
+// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
+
+namespace Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Repositories;
+
+public interface IUserRepository : IRepository<User>
+{
+
+}
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/RepositoryBase.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/RepositoryBase.cs
index 3af58a6f9..d8cd77811 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/RepositoryBase.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/RepositoryBase.cs
@@ -15,7 +15,14 @@ public class Repository<TEntity> : RepositoryBase<TEntity>
 
 }
 
-public class UserRepository<TEntity> : IRepository<UserDbContext, TEntity>
+public class RepositoryBase<TDbContext, TEntity> : IRepository<TDbContext, TEntity>
+    where TEntity : class
+    where TDbContext : class
+{
+
+}
+
+public class TestRepository<TEntity> : IRepository<UserDbContext, TEntity>
     where TEntity : class
 {
 
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/UserRepository.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/UserRepository.cs
new file mode 100644
index 000000000..5f4218353
--- /dev/null
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Repositories/UserRepository.cs
@@ -0,0 +1,9 @@
+// Copyright (c) MASA Stack All rights reserved.
+// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
+
+namespace Masa.Utils.Extensions.DependencyInjection.Tests.Infrastructure.Repositories;
+
+public class UserRepository : IUserRepository
+{
+
+}
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/CustomizeClientFactory.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/CustomizeClientFactory.cs
index 3cafaac57..7395cda56 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/CustomizeClientFactory.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/CustomizeClientFactory.cs
@@ -1,8 +1,6 @@
 // Copyright (c) MASA Stack All rights reserved.
 // Licensed under the MIT License. See LICENSE.txt in the project root for license information.
 
-using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Services;
-
 namespace Masa.Utils.Extensions.DependencyInjection.Tests.Infrastructure.Services;
 
 [Dependency(ReplaceServices = true)]
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/EmptyClientFactory.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/EmptyClientFactory.cs
index 71f985d86..220ed1edd 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/EmptyClientFactory.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/EmptyClientFactory.cs
@@ -1,8 +1,6 @@
 // Copyright (c) MASA Stack All rights reserved.
 // Licensed under the MIT License. See LICENSE.txt in the project root for license information.
 
-using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Services;
-
 namespace Masa.Utils.Extensions.DependencyInjection.Tests.Infrastructure.Services;
 
 public class EmptyClientFactory : IClientFactory
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/NullCalculateProviderService.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/NullCalculateProviderService.cs
index 969a46ac6..f812f05c0 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/NullCalculateProviderService.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/Infrastructure/Services/NullCalculateProviderService.cs
@@ -1,8 +1,6 @@
 // Copyright (c) MASA Stack All rights reserved.
 // Licensed under the MIT License. See LICENSE.txt in the project root for license information.
 
-using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Services;
-
 namespace Masa.Utils.Extensions.DependencyInjection.Tests.Infrastructure.Services;
 
 public class NullCalculateProviderService : ICalculateProviderService
diff --git a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/_Imports.cs b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/_Imports.cs
index 695649bde..1224143c3 100644
--- a/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/_Imports.cs
+++ b/src/Utils/Extensions/Tests/Masa.Utils.Extensions.DependencyInjection.Tests/_Imports.cs
@@ -1,6 +1,7 @@
 // Copyright (c) MASA Stack All rights reserved.
 // Licensed under the MIT License. See LICENSE.txt in the project root for license information.
 
+global using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Models;
 global using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Repositories;
 global using Masa.Utils.Extensions.DependencyInjection.Tests.Domain.Services;
 global using Masa.Utils.Extensions.DependencyInjection.Tests.Infrastructure;