Виндзор может делать то, что вы запрашиваете через средство разрешения зависимостей CollectionResolver
:
var container = new WindsorContainer();
var kernel = container.Kernel;
kernel.Resolver.AddSubResolver(new CollectionResolver(kernel));
Теперь, если вы зарегистрируете несколько реализаций ITask
, у вашего бегуна задач может быть ctor, подобный этому:
public TaskRunner(IEnumerable<ITask> tasks)
{
// ...
}
что ты хочешь, верно?