2012-01-10 60 views
1

我是新來的依賴注入世界,剛開始使用Unity 2.0的項目工作。一切都很好,直到我創建了一個引用另一個服務的MVC服務,該服務又引用了其他服務。結果我得到一個堆棧溢出異常。我明白髮生了什麼,這是有道理的,但它讓我停下來,認爲我可能做錯了什麼。有沒有確保這種情況不會發生的最佳做法?引起循環依賴和堆棧溢出的依賴注入,我做錯了什麼?

public AccountService(IUserRepository userRepository, IAuthenticationService authService... 

public AuthenticationService(IUserRepository userRepository, IAccountService accountService... 

回答

3

它讓我停下來思考,我可能會做一些錯誤

是的,你的設計是錯誤的。您應該避免在對象中使用循環引用。

是否有確保不會發生的最佳做法?

只需在對象層次結構中打破此循環引用即可。重新思考你的設計。

+0

謝謝,所以你認爲我應該避免服務引用服務或允許它只是確保避免循環引用? – NullReference 2012-01-10 20:31:49

+0

@NullReference,避免循環引用,這是肯定的。就服務參考服務而言,它將取決於你究竟在做什麼設計以及你如何設計它。可能是一個壞主意,但我不想在沒有任何關於你的場景的背景下發言自己。 – 2012-01-10 20:37:16