【发布时间】:2013-05-14 21:18:00
【问题描述】:
我们在工作中使用 Ninject 作为对旧系统进行修改的一部分。在应用程序的某些部分,我们选择使用包含 Ninject 的静态服务定位器。这实际上只是一个静态适配器。
当我通过我们的服务定位器请求 IEnumerable<IFoo> 时,它只是通过 Ninject 的 GetAll 方法请求相同。我想知道的是,由于我还没有真正枚举列表,所有服务是否都会保持非活动状态。
我问的原因是我们正在使用 Ninject 来替换 WinForms 应用程序中的旧控制器定位器。其中一些控制器毛茸茸的,所以我不希望它们激活,直到我过滤到我想要的那个。我们的做法是将Where 子句应用于服务定位器上的集合,然后使用 FirstOrDefault 来选择正确的。
我的理解是激活将发生在枚举(在我们的例子中为FirstOrDefault)这是正确的吗?
【问题讨论】:
标签: ninject activation