//所有的service继承一个公共的接口,根据这个公共接口进行注入
//未处理泛型,所以此处的类型需要使用公共接口
public class RepositoryDIFactory
{
private static RepositoryDIFactory data;
public static RepositoryDIFactory Instance = data ?? (data = new RepositoryDIFactory());
/// <summary>
///
/// </summary>
/// <param name="service"></param>
/// <param name="baseType"></param>
public void Inject(IServiceCollection service,Type baseType)
{
//根据type类型加载不同仓储
var assembly = GetAssemblyList();
foreach (var item in assembly)
{
foreach (Type type in item.GetTypes())
{
if (baseType.IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)
{
Type[] interfaces = type.GetInterfaces();
foreach (Type i in interfaces)
{
if (!i.IsGenericType && i != baseType && i.Name != baseType.Name)
{
service.AddScoped(i, type);
test.Add(i.Name, type.Name);
}
}
}
}
}
}
}