c# - 当我创建集合时,Ninject inject 向集合中添加一个元素

标签 c# dependency-injection ninject ninject-2

我正在使用 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/

相关文章:

c# - 移除对 IoC 容器的依赖

asp.net-mvc - 从 MVC 中的 _Layout.cshtml 中的 Ninject 获取对象实例

c# - 当存储库包含您最重要的代码时编写单元测试

java - 获取 ISO 8601 日期格式,例如: 2009-06-15T13:45:30

c# - 找出导致 IIS7 问题的原因

typescript - Angular 6 将可注入(inject)数组传递给 app.module.ts 中的提供程序会导致 : "Error in Cannot read property ' length' of undefined"

c# - 依赖注入(inject)-通俗解释

inheritance - Ninject 父子容器层次结构(如继承)

C# - 单元测试工厂设计模式

c# - LINQ to XML 到数据表