У меня есть несколько реализаций интерфейса, которые мне нужно зарегистрировать в Autofac, однако мне не удается найти способ сделать их все вместе, а не по отдельности, как у меня сейчас:
builder.RegisterType<UserDefinedRepository<CType>>().As<IUserDefinedRepository<CType>>();
builder.RegisterType<UserDefinedRepository<LType>>().As<IUserDefinedRepository<LType>>();
И CType
, и LType
имеют одинаковый базовый тип, а параметр Type интерфейса и реализация класса имеют ограничение одного типа.
Я прочитал множество примеров с реализацией Autofac, но большинство из них кажутся слишком сложными для того, что я пытаюсь сделать, и документация не очень полезна (от моего понимания в любом случае!).
У меня уже есть регистрации всех других моих репозиториев, которые хорошо работали в течение многих лет, но у них всех есть конкретные реализации интерфейсов:
var baseRepoType = typeof(InfraAbsRepos.IRepository);
builder.RegisterAssemblyTypes(Assembly.Load("Infrastructure.Repositories"))
.Where(t => baseRepoType.IsAssignableFrom(t))
.AsImplementedInterfaces()
.InstancePerRequest();