これは私のシナリオです:
public class Foo
{
private readonly List<Lazy<IAnimal>> _animals;
public Foo(List<Lazy<IAnimal>> animals )
{
_animals = animals;
}
public void Bark()
{
//Line: *
var dog = _animals.First(p => p.GetType() == typeof (Dog)).Value;
}
Public void Mio()
{
//Line: *
var dog = _animals.First(p => p.GetType() == typeof (Cat)).Value;
}
}
public class Dog:IAnimal
{
}
public class Cat:IAnimal
{
}
public interface IAnimal
{
}
質問:
ここで、動物のリストはクラス Foo に遅延注入されます。
Line * with のようなことをしたいですNinject
。ご存知かもしれませんが、問題は、クラスを解決する前に、GetType()
が返されることNull
です。では、いつでもリスト内の項目の 1 つだけを解決するにはどうすればよいでしょうか?
そのようなことはできますNinject
か、それとも DI コンテナーを変更する必要がありますか?