Autofac Resolve <ienumerable <t>&gt;()返回空列表</ienumerable <t>

时间:2012-01-13 03:38:17

标签: c# .net autofac

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

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

问题是allTypes出现空白。

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

我错过了什么?

1 个答案:

答案 0 :(得分:6)

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

builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
            .AssignableTo<IPersistedModel>()
            .AsImplementedInterfaces();