我编写了一个由多个类实现的接口。我想编写一个服务类,它将所有注册的实现注入到它的ctor中。
我能想到的唯一解决方案是在 ctor 中调用 Service Locator 并要求它 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();
}
}
}
编辑- 我应该提到我正在使用温莎城堡。