Dependency injection 在.net core web api中,有没有任何方法可以在没有使用Linq/折射的autoface的情况下编写DI?

Dependency injection 在.net core web api中,有没有任何方法可以在没有使用Linq/折射的autoface的情况下编写DI?,dependency-injection,asp.net-core-2.0,autofac,asp.net-core-webapi,Dependency Injection,Asp.net Core 2.0,Autofac,Asp.net Core Webapi,我习惯于使用AutoFace for DI,我有一个应用程序在asp.net MVC中使用AutoFace for DI,如下所述 builder.RegisterAssemblyTypes(typeof(BankRepository).Assembly) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces() .InstancePerLifetimeScope(); 现在我正在为web Api准备一个

我习惯于使用AutoFace for DI,我有一个应用程序在asp.net MVC中使用AutoFace for DI,如下所述

builder.RegisterAssemblyTypes(typeof(BankRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope(); 
现在我正在为web Api准备一个新的asp.net核心应用程序

我开始知道.NETCore带有内置的DI功能。 这样我就可以像下面这样注册我的依赖项了

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddDbContext<DbEntities>(options => options.UseSqlServer(Configuration.GetConnectionString("DbEntities")));


            services.AddScoped<ISizeRepository, SizeRepository>(); 
            //But the prob is that I have to specify each repository & it's implemenation here                
            services.AddScoped<IUnitOfWork, UnitOfWork>();
            services.AddScoped<IDatabaseFactory, DatabaseFactory>();                             

        }
public void配置服务(IServiceCollection服务)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DbEntities”));
services.addScope();
//但问题是我必须指定每个存储库&它在这里实现
services.addScope();
services.addScope();
}
问题: 1.可能有100多个存储库,因此仅用于DI注册的代码将很长。
2.每次,对于新的存储库,我都必须向这一部分添加一个条目,这是一种开销


asp.net core中是否有任何方法可以像Autofac使用Linq&Reflection提供的那样进行依赖项注册

最好使用工厂模式来获取存储库实例。然后,你只需要注射你的工厂。更实用。@ChrisPratt您能分享一些参考链接吗?我可以查看并理解这些链接,以便实际实现。内置DI容器不包含任何批注册功能(也称为程序集扫描)。我建议坚持使用Autofac,因为这是一个非常成熟的DI容器。您的存储库应该位于您的工作单元内。因此,甚至不需要注册您的repositorie。最好使用工厂模式来获取您的存储库实例。然后,你只需要注射你的工厂。更实用。@ChrisPratt您能分享一些参考链接吗?我可以查看并理解这些链接,以便实际实现。内置DI容器不包含任何批注册功能(也称为程序集扫描)。我建议坚持使用Autofac,因为这是一个非常成熟的DI容器。您的存储库应该位于您的工作单元内。因此,甚至不需要注册您的存储库