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