n4c*_*500 16 collections code-injection autofac c#-4.0
我是Autofac(3)的新手,并且正在使用它在几个实现IRecognizer的程序集中查找许多类.
所以我有:
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()).As<IRecognizer>();
Run Code Online (Sandbox Code Playgroud)
这很好.
但是我想将找到的组件的引用注入到构造函数中 - 有点像:
public Detector(List<IRecognizer> recognizers)
{
this.Recognizers = recognizers;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
nem*_*esv 23
Autofac支持IEnumerable<T>作为关系类型:
例如,当Autofac注入类型的构造函数参数时
IEnumerable<ITask>,它将不会查找提供的组件IEnumerable<ITask>.相反,容器将找到所有实现ITask并注入所有实现.
所以将构造函数更改为:
public Detector(IEnumerable<IRecognizer> recognizers)
{
this.Recognizers = new List<IRecognizer>(recognizers);
}
Run Code Online (Sandbox Code Playgroud)