簡體   English   中英

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

[英]Autofac Resolve<IEnumerable<T>>() returns empty list

我已經閱讀了很多Autofac文檔/ 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()上返回。

我錯過了什么?

您需要將類型注冊為接口,使用.AsImplementedInterfaces() .As<IPersistedModel>()或使用.AsImplementedInterfaces()所有接口:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM