我們正在使用Ninject作爲我們遺留系統修改的一部分。在應用程序的某些部分,我們選擇使用靜態服務定位器來包裝Ninject。這實際上只是一個靜態適配器。Ninject在請求IEnumerable時發生服務激活的幾點
當我通過我們的服務定位器請求IEnumerable<IFoo>
時,它只需通過Ninject的GetAll
方法請求相同的方法。我想知道的是,因爲我沒有實際列舉清單,所有服務都將保持不活動狀態。
我問的原因是我們使用Ninject來替換WinForms應用程序中的舊控制器定位器。其中一些控制器很毛茸茸的,所以我不希望它們激活,直到我篩選出我想要的。我們如何做到這一點是將Where
子句應用於服務定位器上的集合,然後使用FirstOrDefault選擇正確的子集。
我的理解是激活會發生在枚舉上(在我們的案例中是FirstOrDefault
)這是正確的嗎?
對不起,我不在一個咒語,upvote給出。 – McDonnellDean