Le château de Windsor: Comment puis-je injecter toutes les implémentations de l'interface dans un ctor?

J'ai écrit une interface qui est mise en œuvre par plusieurs classes. Je veux écrire une classe de Service qui ont enregistré tous les implémentations injecté dans son ctor.

La seule solution que je vois est d'appeler le Service Locator dans le ctor et lui demander de les Résoudre() toutes les implémentations.

Idéalement, je voudrais quelque chose comme cela -

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();
        }
    }
}

MODIFIER - je dois mentionner que je suis en utilisant le Château de Windsor.

InformationsquelleAutor jameskind | 2012-05-04