Dependency injection 针对dotnet核心的接口进行程序集扫描和注册类

Dependency injection 针对dotnet核心的接口进行程序集扫描和注册类,dependency-injection,asp.net-core,.net-assembly,Dependency Injection,Asp.net Core,.net Assembly,请参阅以下代码: public interface IUserRepository:IRepository<User> { } public abstract class GenericRepository<TEntity,Tkey>:IRepository<TEntity>,IDisposable where TEntity:BaseEntity<Tkey> where Tkey:class public class UserRepos

请参阅以下代码:

public interface IUserRepository:IRepository<User>
{

}

public abstract class GenericRepository<TEntity,Tkey>:IRepository<TEntity>,IDisposable
where TEntity:BaseEntity<Tkey> 
where Tkey:class


public class UserRepository : GenericRepository<User, string>, IUserRepository
{
    public UserRepository(SecurityDb dbContext) : base(dbContext)
    {
    }
}

此代码无法正常工作。

请添加异常详细信息,因为不清楚哪些内容无法正常工作此代码正常工作,但结果未如我想象的那样显示请添加异常详细信息,因为不清楚哪些内容无法正常工作此代码正常工作,但结果未如我想象的那样显示
    public static IServiceCollection AddIgidiaService(this IServiceCollection service,IEnumerable<Assembly> Assemblies)
    {

       var types= Assemblies.SelectMany(a=>a.ExportedTypes).ToArray();
       var repositories= types.Where(t=>typeof(GenericRepository<,>).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()))
       .Where(t => !t.GetTypeInfo().IsAbstract);
       var irepositories=types.Where(t=>typeof(IRepository<>).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()))
            .Where(t=>t.GetTypeInfo().IsInterface);
            foreach (var repository in repositories)
            {
                foreach (var irepositoriy in irepositories)
                {
                    if (repository.GetTypeInfo().IsInstanceOfType(irepositoriy))
                    {
                        service.AddScoped(repository,irepositoriy);
                    }
                }
            }
        return service;
    }