4

我正在使用 MVVM 灯并已将绑定设置如下:

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

当我尝试获取 ICollection 时,我得到了一个包含 ONE 元素的集合。我期待一个免费的收藏。

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

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

1 回答 1

5

这在Ninject 邮件列表上得到了回答。

这种行为是预期的。当一个集合被注入时,它会找到所有匹配泛型参数的绑定,并将它们添加到被注入的集合中。如果您删除 Element 上的绑定,则会注入一个空集合。

给出了另一个示例,显示了基于此行为可以做什么。

于 2010-10-21T13:29:47.343 回答