Autofac Resolve <IEnumerable <T >>()返回空列表

Jac*_*eja 4 .net c# autofac

我已经阅读了很多Autofac文档/ wiki,表明我可以通过执行如下所示的简单操作获得所有已注册类型的列表:

var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .AssignableTo<IPersistedModel>();
var container = builder.Build();
var allTypes = container.Resolve<IEnumerable<IPersistedModel>>();
Run Code Online (Sandbox Code Playgroud)

问题是allTypes出现空白.

在调试器中,我可以看到容器内部有7种匹配类型甚至IPersistedModel数组...但它们不会在Resolve()上返回.

我错过了什么?

por*_*ges 6

您需要将类型注册为接口,使用.As<IPersistedModel>()或使用以下所有接口.AsImplementedInterfaces():

builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
            .AssignableTo<IPersistedModel>()
            .AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)