Я написал интерфейс, который реализуется несколькими классами. Я хочу написать класс службы, в котором все зарегистрированные реализации будут внедрены в его ctor.
Единственное решение, которое я могу придумать, это вызвать Service Locator внутри ctor и попросить его Resolve() для всех реализаций.
В идеале я хотел бы что-то вроде этого -
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();
}
}
}
РЕДАКТИРОВАТЬ - Я должен упомянуть, что использую Castle Windsor.