C# 在创建集合时,向集合添加元素

C# 在创建集合时,向集合添加元素,c#,dependency-injection,ninject,ninject-2,C#,Dependency Injection,Ninject,Ninject 2,我正在使用MVVM light,并已按如下方式设置绑定: class TestModule:NinjectModule { public override void Load() { Bind<ICollection<Element>>().To<Collection<Element>>(); Bind<Element>().ToSelf(); } } 类TestModule:n

我正在使用MVVM light,并已按如下方式设置绑定:

class TestModule:NinjectModule
{
    public override void Load()
    {
        Bind<ICollection<Element>>().To<Collection<Element>>();
        Bind<Element>().ToSelf();
    }
}
类TestModule:ninject模块
{
公共覆盖无效负载()
{
绑定()到();
Bind().ToSelf();
}
}
当我尝试获取ICollection时,我得到一个包含一个元素的集合。我希望能有一批精美的收藏品

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

    var col = _kernel.Get<ICollection<Element>>();
    Console.WriteLine("Count={0}", col.Count);   //Write "Count=1", Expect "Count=0"
var\u kernel=新的标准内核(新的TestModule());
var col=_kernel.Get();
WriteLine(“Count={0}”,col.Count)//写入“计数=1”,除“计数=0”外
这一点已在屏幕上得到回答

这种行为是意料之中的。当一个集合被注入时,它将找到所有绑定 与泛型参数匹配并将其添加到要创建的集合 注射。若移除元素上的绑定,则会出现一个空集合 注射


另一个例子展示了基于这种行为可以做些什么。

这令人愤怒,违反直觉,完全没有用!似乎没有明显的方法强制Ninject将空集合注入类型。我不希望集合中有虚拟对象!照我说的去做,尼尼特!