我正在研究DotNetNuke模塊中的遺留代碼,試圖在測試框架下獲取類和行爲:我藉此機會遵循「有效地使用遺留代碼」一書的建議,所以會發生什麼呢?我試圖定義可以徹底測試並轉換爲服務的區域。然後我想使用一個IoC框架來工作。現在,我已經開始關注Ninject。如何在不改變基礎架構的情況下在一個asp.net webforms組件(DotNetNuke模塊)中使用IoC?
但是我碰到一個設計問題:因爲我在DotNetNuke模塊中,我不能真正改變應用程序範圍的結構:例如我不能從NinjectHttpApplication派生應用程序。我也不能使用these suggestions from SO。 我正在考慮讓我的模塊將設置然後使用的靜態類中的內核,但從我讀過這是一個非常糟糕的主意。
所以我開始問自己是否可以在一個應用程序中使用IoC,這個應用程序還沒有被設置爲從頭開始支持它。如果我應該爲每個請求加載一個完整的依賴關係樹,我如何重寫本地代碼並從IoC中受益?有沒有一種模式可以從當地的重寫中使用IoC?
即使我正在使用DotNetNuke,任何可以安裝到獨立框架中的獨立組件都會引發同樣的問題。另外,我並沒有專門針對Ninject,如果另一個IoC框架可以幫助在這種情況下,我願意考慮它。
謝謝伊恩。令我困擾的是,在這種情況下,IoC模式似乎確實是一種「全部或全部」的方法;我無法在某些領域使用IoC容器,而無需在非常低的層次上準備我的框架。爲了給我一個想法,你花了多少時間在你的Ninject連線上? – samy
對不起,我沒有一個很好的答案在那一個 - 我可能花了幾個小時,一個星期的時間裏看了幾天。這不是一個非常強大的努力。這可能值得再次調查。說實話,DNN本身可能會發生一些變化,同時這會讓它變得更簡單 - 誰知道:) –