Castle windsor 温莎城堡:我能得到一个类型的所有实例吗?

Castle windsor 温莎城堡:我能得到一个类型的所有实例吗?,castle-windsor,Castle Windsor,我正在向Windsor注册一组ITask实现,使用Named将它们分开。类是否有办法请求ITask的所有实例?是 container.ResolveAll<ITask>() container.ResolveAll() 这篇博文详细解释了如何以一种无容器的方式来完成这项工作: 与给出的其他答案类似。Windsor可以通过CollectionResolver子依赖项resolver执行您的请求: var container = new WindsorContainer(); va

我正在向Windsor注册一组ITask实现,使用Named将它们分开。类是否有办法请求ITask的所有实例?

container.ResolveAll<ITask>()
container.ResolveAll()
这篇博文详细解释了如何以一种无容器的方式来完成这项工作:


与给出的其他答案类似。

Windsor可以通过
CollectionResolver
子依赖项resolver执行您的请求:

var container = new WindsorContainer();
var kernel = container.Kernel;
kernel.Resolver.AddSubResolver(new CollectionResolver(kernel));
现在,如果您注册了
ITask
的多个实现,那么您的任务运行程序可以有这样一个ctor:

public TaskRunner(IEnumerable<ITask> tasks)
{
    // ...
}
public TaskRunner(IEnumerable任务)
{
// ...
}

这正是您想要的,对吗?

我正在编写我的应用程序容器无知,因此我正在寻找一种通过构造函数工作的方法。很抱歉,我遗漏了一点,即我的应用程序容器无知,因此容器调用有点糟糕。。。也就是说,如果这是我可以将它隐藏在TaskResolver中的唯一方法,我的主要助手可以通过它的构造函数请求它。