是否可以使用 Autofac 将已解析对象的列表注入构造函数?
Posted
技术标签:
【中文标题】是否可以使用 Autofac 将已解析对象的列表注入构造函数?【英文标题】:Is it possible to inject a list of resolved objects into a constructor using Autofac? 【发布时间】:2013-02-27 02:12:04 【问题描述】:我是 Autofac (3) 的新手,我正在使用它在几个实现 IRecognizer 的程序集中查找许多类。
所以我有:
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()).As<IRecognizer>();
这很好。
但我想将对找到的组件的引用注入到构造函数中 - 有点:
public Detector(List<IRecognizer> recognizers)
this.Recognizers = recognizers;
有没有办法做到这一点?
【问题讨论】:
【参考方案1】:Autofac 支持 IEnumerable<T>
作为 relationship type:
例如,当 Autofac 注入类型为的构造函数参数时
IEnumerable<ITask>
它不会寻找提供的组件IEnumerable<ITask>
。相反,容器会找到所有ITask
的实现并将它们全部注入。
所以将你的构造函数更改为:
public Detector(IEnumerable<IRecognizer> recognizers)
this.Recognizers = new List<IRecognizer>(recognizers);
【讨论】:
nemesv 我有一个非常相似的问题 - 不认为你能帮忙吗? ***.com/questions/64363768/…以上是关于是否可以使用 Autofac 将已解析对象的列表注入构造函数?的主要内容,如果未能解决你的问题,请参考以下文章