Castle Windsor: Como injetar todas as implementações de interface em um ctor?

Eu escrevi uma interface que é implementada por várias classes. Eu quero escrever uma classe de serviço que terá todas as implementações registradas injetadas em seu ctor.

A única solução que posso pensar é chamar o Service Locator dentro do ctor e pedir a Resolve () todas as implementações.

Idealmente, eu gostaria de algo assim -

<code>interface IVehicle
{
    void Start();
}

class Car : IVehicle
{
    public void Start()
    {
        Console.WriteLine("Car started.");
    }
}

class Truck : IVehicle
{
    public void Start()
    {
        Console.WriteLine("Truck started.");
    }
}

class Motorbike : IVehicle
{
    public void Start()
    {
        Console.WriteLine("Motorbike started.");
    }
}

class VehicleService
{
    // How do I inject all implementations of IVehicle?
    public VehicleService(IEnumerable<IVehicle> vehicles)
    {
        foreach (var vehicle in vehicles)
        {
            vehicle.Start();
        }
    }
}
</code>

EDITAR - Eu devo mencionar que estou usando Castle Windsor.

questionAnswers(4)

yourAnswerToTheQuestion