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