我正在使用 MVVM light 并设置了如下绑定(bind):
class TestModule:NinjectModule
{
public override void Load()
{
Bind<ICollection<Element>>().To<Collection<Element>>();
Bind<Element>().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"
最佳答案
这在 Ninject mailing list 上得到了回答.
此行为是预期的。当一个集合被注入(inject)时,它会找到所有的绑定(bind) 匹配通用参数并将它们添加到集合中 注入(inject)。如果您删除对 Element 的绑定(bind),则空集合将 被注入(inject)。
另一个example is given显示可以根据此行为执行的操作。
关于c# - 当我创建集合时,Ninject inject 向集合中添加一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3987350/