2010-10-21 50 views
4

我使用MVVM光,并建立了如下绑定集合添加到收藏:Ninject注入的元素,当我创建

class TestModule:NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<ICollection<Element>>().To<Collection<Element>>(); 
     Bind<Element>().ToSelf(); 
    } 
} 

当我试图得到一个ICollection的,我得到一个集合的一个元件。我期待一个exmpty集合。

var _kernel = new StandardKernel(new TestModule()); 

    var col = _kernel.Get<ICollection<Element>>(); 
    Console.WriteLine("Count={0}", col.Count); //Write "Count=1", Expect "Count=0" 

回答

5

这回答在Ninject mailing list

此行为是预期的。注入集合时,它会查找与通用参数匹配的所有绑定 ,并将它们添加到注入的 集合中。如果您删除Element上的绑定,则会注入一个空集合 。

另一个example is given显示基于此行为可以做什么。

+0

这是令人生气的,违反直觉的,完全没用的!似乎没有明显的方式强制Ninject将空集合注入到类型中。我不想要**在集合中的虚拟对象!就像你所说的那样,Ninject! – 2011-09-27 19:33:14