mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-05-02 15:22:49 +08:00
39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
#if ns20
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Linq;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace FreeSql {
|
|
public static class FreeSqlRepositoryDependencyInjection {
|
|
|
|
public static IServiceCollection AddFreeRepository(this IServiceCollection services, Action<FluentDataFilter> globalDataFilter = null, params Assembly[] assemblies) {
|
|
|
|
DataFilterUtil._globalDataFilter = globalDataFilter;
|
|
|
|
services.AddScoped(typeof(IReadOnlyRepository<>), typeof(GuidRepository<>));
|
|
services.AddScoped(typeof(IBasicRepository<>), typeof(GuidRepository<>));
|
|
services.AddScoped(typeof(BaseRepository<>), typeof(GuidRepository<>));
|
|
services.AddScoped(typeof(GuidRepository<>));
|
|
|
|
services.AddScoped(typeof(IReadOnlyRepository<,>), typeof(DefaultRepository<,>));
|
|
services.AddScoped(typeof(IBasicRepository<,>), typeof(DefaultRepository<,>));
|
|
services.AddScoped(typeof(BaseRepository<,>), typeof(DefaultRepository<,>));
|
|
services.AddScoped(typeof(DefaultRepository<,>));
|
|
|
|
if (assemblies?.Any() == true) {
|
|
foreach(var asse in assemblies) {
|
|
foreach (var repos in asse.GetTypes().Where(a => a.IsAbstract == false && typeof(IBaseRepository).IsAssignableFrom(a))) {
|
|
|
|
services.AddScoped(repos);
|
|
}
|
|
}
|
|
}
|
|
|
|
return services;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |