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