Wcf 向Autofac进行通用注册?

Wcf 向Autofac进行通用注册?,wcf,dependency-injection,autofac,Wcf,Dependency Injection,Autofac,我可以手动注册我的存储库,如下所示: builder.RegisterType<Repository<Account>>().As<IRepositoryAsync<Account>>(); builder.RegisterType<Repository<User>>().As<IRepositoryAsync<User>>(); builder.RegisterType<Repository&

我可以手动注册我的存储库,如下所示:

builder.RegisterType<Repository<Account>>().As<IRepositoryAsync<Account>>();
builder.RegisterType<Repository<User>>().As<IRepositoryAsync<User>>();
builder.RegisterType<Repository<Order>>().As<IRepositoryAsync<Order>>();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
但似乎无法自动注册它们。我尝试了一些运气不佳的事情,即:

builder.RegisterAssemblyTypes(typeof(Account).Assembly)
    .Where(t => t.IsAssignableFrom(typeof(IRepositoryAsync<>)))
    .AsSelf()
    .AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(Account.Assembly)
.Where(t=>t.IsAssignableFrom(typeof(IRepositoryAsync)))
.AsSelf()
.a实现接口();
…还有这个

builder.RegisterAssemblyTypes(typeof(Account).Assembly)
    .AsClosedTypesOf(typeof(IRepositoryAsync<>));
builder.RegisterAssemblyTypes(typeof(Account.Assembly)
.AsClosedTypesOf(typeof(IRepositoryAsync));

如果要解析
IRepositoryAsync
,请尝试以下操作:

ContainerBuilder builder = new ContainerBuilder();
builder.RegisterGeneric(typeof(Repository<>))
       .As(typeof(IRepositoryAsync<>));

IContainer container = builder.Build();

IRepository<Foo> fooRepository = container.Resolve<IRepositoryAsync<Foo>>();

谢谢这起作用了。RegisterGeneric(typeof(Repository)).As(typeof(IRepositoryAsync));
public class FooRepository : IRepositoryAsync<Foo> 
{ }

// ...

builder.RegisterAssemblyTypes(typeof(FooRepository).Assembly)
       .AsClosedTypesOf(typeof(IRepositoryAsync<>));