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 -
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();
}
}
}
EDITAR - Eu devo mencionar que estou usando Castle Windsor.