我在asp.net mvc中創建基於節點的web CMS系統。域對象擴展方法中的依賴注入
閱讀了一些關於依賴注入的書籍後,我將解決方案分解爲多個項目並使用抽象(抽象類和接口)。
我無法弄清楚如何解決以下類型的代碼在我的web項目:
myDomainObjectNode.GetChildNodes<SomeSubNodeClass>();
我能做到這一點,如果域對象有一個INodeRepository的參考,但是這將意味着我必須在所有域對象中執行這種依賴關係,這很麻煩,尤其是在創建新實例時。在域對象中有依賴關係(主要是存儲庫)是一件壞事?
我的另一個想法是實現這種使用擴展方法。但是,擴展方法在靜態類上是靜態的,靜態類本身不能使用IoC構造。我可以使用Singleton爲INodeRepository解決此問題,並由IoC設置它。
這不像是一個優雅的解決方案......你有任何其他想法或輸入?
謝謝!
謝謝您的輸入! 我的存儲庫不需要知道要創建什麼類型(子類)?另外,我已經很多代碼看起來像myDomainObjectNode.GetChildNodes();並非常喜歡它。我真的很喜歡能夠編寫這樣的代碼的一個很好的解決方案:) –
hakksor
2011-02-23 09:53:24