我剛開始使用Ninject在(大)項目,我只使用DI爲它的一部分,開始涉水英寸我有一個使用構造器注入進行廣泛組織的子系統。使用Ninject注入此子系統中類之間的所有依賴關係效果很好。但是,我依賴於子系統之外的東西,我真的很想使用Ninject自動注入,但不負責其生命週期。跳繩處置上失活Ninject
我想Bind<T>.ToConstant(...)
會爲我所要做的工作。例如,我可能有一個類型爲Monkey的類來充當Singleton,但我的應用程序的另一部分是在沒有Ninject的情況下處理其生命週期(例如,創建它並手動配置它)。當我配備Ninject的子系統被創建時,我實例化一個內核,綁定我的子系統類,然後使用類似的東西來綁定到各種「外部」依賴項。這在激活時很有效,但在處理內核時不需要。我的子系統的生命週期可能比這些外部依賴關係的生命週期短,但是當我在內核中調用Dispose時,所有這些依賴關係都會被丟棄,這不是我想要的。儘管我可以通過兩種方式看到參數,但Ninject會自動處理一個它沒有創建的對象,這似乎有點令人懷疑。我希望至少有一種方法可以退出這種行爲,但到目前爲止我還沒有發現任何東西。有沒有這方面的支持?
謝謝,這個作品!僅僅爲了我自己的理解,我明白了瞬態作用域如何適用於激活。對於停用,Ninject是否永遠不會處理使用瞬變範圍時創建的實例(我可能在我的閱讀中錯過了這一點)。另外,對於常量,默認Singleton和Transient作用域之間唯一的區別是,對象是否在停用時處置? – StellarEleven