2014-10-05 52 views
0

我尝试注册一个通用类型Repository<T>与接口IRepository<T>其中TIEntity注册一个不同的通用类型作为扫描

builder.RegisterAssemblyTypes(assemblies) 
     .Where(t => typeof(IEntity).IsAssignableFrom(t)) 
     .WithMetadata("Type", (t) => t) 
     .AsImplementedInterfaces() 
     .InstancePerLifetimeScope(); 

现在的问题是如何注册的每个IEntity发现我的课

Repository<T>: IRepository<T> where T: IEntity 

回答

1

其实,你并不需要注册的实体,您只需要注册库。 Autofac对开放和封闭类型的泛型都有很好的支持。从OpenGenerics文档,注册开放式泛型类型你的资料库:

builder.RegisterGeneric(typeof(Repository<>)) 
    .As(typeof(IRepository<>)); 

现在可以解决关闭库类型是这样的:

var userRepo = container.Resolve<IRepository<User>>(); 
相关问题