我已经阅读了很多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()上返回。
我错过了什么?
答案 0 :(得分:6)
您需要使用.As<IPersistedModel>()
或使用.AsImplementedInterfaces()
的所有接口将类型注册为接口:
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AssignableTo<IPersistedModel>()
.AsImplementedInterfaces();