2016-03-16 47 views
0

有没有任何方法可以注册通用类型而无需在Autofac上按类型注册类型?适用于所有类型的通用Autofac容器注册

现在:

builder.RegisterType<Repository<Authorization>>().As<IRepository<Authorization>>().InstancePerLifetimeScope(); 
builder.RegisterType<Repository<Branch>>().As<IRepository<Branch>>().InstancePerLifetimeScope(); 
builder.RegisterType<Repository<Customer>>().As<IRepository<Customer>>().InstancePerLifetimeScope(); 
builder.RegisterType<Repository<Foo>>().As<IRepository<Foo>>().InstancePerLifetimeScope(); 
.... 

注册全部关闭他们像:

builder.RegisterType<Repository<T>>().As<IRepository<T>>().InstancePerLifetimeScope(); 
+2

您是否已经检查过文档中的开放式泛型部分? http://docs.autofac.org/en/latest/register/registration.html#open-generic-components – nemesv

+0

@nemesv感谢指点部分。它帮助我解决,非常感谢.. – hkutluay

回答

0

This is是我期待的。

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

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