给定以下接口:
public interface IMyProcessor
{
void Process();
}
我希望能够注册多个实现,并且让我的DI容器将它们注入到类中的可枚举对象中,就像这样:
public class MyProcessorLibrary
{
private readonly IMyProcessor[] _processors;
public MyProcessingThing(IMyProcessor[] processors)
{
this._processors = processors;
}
public void ProcessAll()
{
foreach (var processor in this._processors)
{
processor.Process();
}
}
}
这是否可行? 我当前实现的
MyProcessorLibrary
通过静态查找所有的 IMyProcessor
实现,但如果可以的话,我更愿意通过容器来完成。 我正在使用 Unity,但很想知道其他容器是否支持它。编辑:感谢迄今为止的回答。 清楚地说,我想将
MyProcessorLibrary
注入另一个类中,并将其构建为依赖对象树的布线的一部分,例如:public class MyProcessorRepository
{
public MyProcessorRepository(MyProcessorLibrary processorLibrary)
{
}
}
public class MyProcessorService
{
public MyProcessorService(MyProcessorRepository processorRepository)
{
}
}
var container = new UnityContainer();
// Register a bunch of IMyProcessors...
var service = container.Resolve<MyProcessorService>();