LFlow/LFlow.Base/Utils/RegisterModule.cs

82 lines
2.2 KiB
C#

namespace LFlow.Base.Utils;
/// <summary>
/// 注册模块
/// </summary>
public static class RegisterModule
{
/// <summary>
/// 注册所有模型
/// </summary>
/// <param name="types"></param>
/// <param name="services"></param>
public static void RegisterAllModel(this List<Type> types, IServiceCollection services)
{
foreach (var type in types)
{
if (type.IsAbstract || !type.IsClass)
{
continue;
}
var interfaces = type.GetInterfaces();
foreach (var inter in interfaces)
{
if (inter.Name.Equals("IDataModel"))
{
services.AddScoped(inter, type);
}
}
}
}
/// <summary>
/// 注册所有服务
/// </summary>
/// <param name="types"></param>
/// <param name="services"></param>
public static void RegisterAllService(this List<Type> types, IServiceCollection services)
{
foreach (var type in types)
{
if (type.IsAbstract || !type.IsClass)
{
continue;
}
var interfaces = type.GetInterfaces();
foreach (var inter in interfaces)
{
if (inter.Name.Contains(type.Name) && inter.Name.StartsWith('I') && inter.Name.Contains("Service"))
{
//注册服务
services.AddScoped(inter, type);
}
}
}
}
/// <summary>
/// 注册所有数据仓库
/// </summary>
/// <param name="types"></param>
/// <param name="services"></param>
public static void RegisterAllRepo(this List<Type> types, IServiceCollection services)
{
foreach (var type in types)
{
if (type.IsAbstract || !type.IsClass)
{
continue;
}
var interfaces = type.GetInterfaces();
foreach (var inter in interfaces)
{
if (inter.Name.Contains("IRepo"))
{
//注册数据仓库
services.AddScoped(inter, type);
}
}
}
}
}