複数のクラスで実装されるインターフェースを作成しました。登録されているすべての実装がctorに注入されるServiceクラスを作成したいと思います。
私が考えることができる唯一の解決策は、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();
}
}
}
編集-私はCastleWindsorを使用していることに言及する必要があります。