我编写了一个接口,由多个类实现。我想编写一个Service类,将所有注册的实现注入其构造函数中。
我能想到的唯一解决方案是在构造函数中调用服务定位器并要求它解析所有实现。
理想情况下,我希望像这样实现-
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。