0

私はいくつかのタイプのインターフェイスを取り入れ、すべてインターフェイスIVehicleから継承するクラスを持っています。私はIOCのSimple Injectorを使用しています。私が現在持っているクラスは、このようなものです。シンプルインジェクタを使用してコンクリートのリストをブートストラップする

public class MyClass 
{ 
    public MyClass(ICar car, IMotorcycle motorcycle) 
    {    
    } 
} 

しかし、私は各タイプのIVehicleを渡して、ただ単にIVehicleのリストを渡そうとしています。 ICarインタフェースとIMotorcycleインタフェースを含むリスト。だから私の希望するクラスは、このようなものに見えるでしょう。

public class MyClass 
{ 
    public MyClass(IEnumerable<IVehicle> vehicles) 
    { 

    } 
} 

私はクラスの変更を下に持っているが、私はそれがすべてのIVehiclesタイプに合格するためには、これをブートストラップするかどうかはわかりません。

ブートストラップでこれをやってみました。

<IEnumerable<IVehicle>, List<IVehicle>> 

しかし、自分のリストを見ると、それは空です。誰も私のIVehicleタイプ(ICar、IMotorcycle)でそのリストを作成する方法について知っていますか?

+0

を – LiverpoolOwen

答えて

0

The documentation状態:

シンプルなインジェクタは、種類のコレクションを登録し、解決するためのいくつかのメソッドが含まれています。ここではいくつかの例は以下のとおりです。あなたのケースに翻訳

// Configuration 
// Registering a list of instances that will be created by the container. 
// Supplying a collection of types is the preferred way of registering collections. 
container.RegisterCollection<ILogger>(new[] { typeof(MailLogger), typeof(SqlLogger) }); 

[...] 

// Usage 
var loggers = container.GetAllInstances<ILogger>(); 

この手段:IVehiclesのIEnumerableをを持っている車のクラスを持っているとiVehiclesのためのインタフェースを作成しないのはなぜ

container.RegisterCollection<IVehicle>(new[] { typeof(Car), typeof(Motorcycle) }); 
関連する問題