我尝试使用Repository<T>
IRepository<T>
T
的接口注册通用类型IEntity
。
builder.RegisterAssemblyTypes(assemblies)
.Where(t => typeof(IEntity).IsAssignableFrom(t))
.WithMetadata("Type", (t) => t)
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
现在的问题是如何注册每个IEntity
找到我的班级
Repository<T>: IRepository<T> where T: IEntity
答案 0 :(得分:1)
实际上,您不需要注册实体,只需注册存储库即可。 Autofac对开放式和封闭式仿制药都有出色的支持。从OpenGenerics文档中,注册存储库的开放泛型类型:
builder.RegisterGeneric(typeof(Repository<>))
.As(typeof(IRepository<>));
您现在可以像下面这样解析已关闭的存储库类型:
var userRepo = container.Resolve<IRepository<User>>();