Я привык работать с 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.