这是我的场景:
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
. 那么,如何在需要时仅解决列表中的一项?
可以Ninject
做这样的事情还是我必须改变我的 DI 容器?