Есть ли способ написать DI без автофрейма с помощью Linq / Refraction в .net core web api? - PullRequest
0 голосов
/ 06 февраля 2019

Я привык работать с AutoFace for DI, у меня есть одно из приложений, где я использую Autoface для DI в asp.net MVC, как упомянуто ниже.

builder.RegisterAssemblyTypes(typeof(BankRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope(); 

Сейчас я готовлю новое приложение в ядре asp.net для веб-API.

Я узнал, что ядро ​​.net имеет встроенную функцию 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>();                             

        }

Проблема: 1. Возможно, существует более 100 репозиториев, поэтому это будет длинный код только для регистрации DI.
2. Каждый раз, для нового репозитория, я должен добавлять запись вэта часть, которая является своего рода накладными расходами.

Есть ли способ в ядре asp.net выполнить регистрацию зависимостей так, как это обеспечивает Autofac, используя Linq & Refraction.

...