2014-02-18 170 views
1

我已經添加了另一個項目「xml」到我的項目「同步」。如何解決循環依賴

因此,program.cs(在xml項目中)運行getDetails(),它在同步項目中運行FectchDetails()並將結果作爲對象返回給xml/getDetails()。

如果在同步/ FecthDetails出現錯誤()我想重新運行XML/getDetails()。

我用盡xml.getDetails,但它說它不存在,因爲它不是參考的項目,所以我嘗試將XML項目添加到synchroinse但它告訴我,我不能這樣做,因爲這將導致循環依賴....我怎麼能解決這個

感謝

+1

你真的需要顯示一些代碼,使您的問題更加清晰。 –

+0

嘗試使用反射。這篇文章可能會幫助你。 http://stackoverflow.com/questions/2202381/reflection-how-to-invoke-method-with-parameters – samar

回答

2

如果遇到同步/ FecthDetails()內的誤差,想必你可以拋出一個應用程序異常,趕上在XML/getDetails。然後,您可以決定是重新嘗試還是通知用戶。

我很抱歉,如果我誤解你的問題。如果可能的話發佈一些僞代碼。

+0

沒有那麼完美,拋出一個被xml/details捕獲的catch,然後簡​​單地記錄錯誤並重新運行該函數。謝謝 – John

2

你當循環依賴:

A依賴於B和如果你覺得都需要這種依賴性,那麼B取決於A.

他們應該屬於e項目。

+0

嗯,無論是,或者你可以將他們都需要的共同邏輯移到第三個項目中,可以單獨依靠。 – Kjartan

4

基本上,你有一個項目,X取決於項目Y(X - >Ÿ),以及項目ÿ取決於項目X(Ÿ - > X)。

換句話說,是這樣的:(X < ---> Y)

這種情況意味着,編譯器不知道第一編譯什麼,因此抱怨。

爲了解決這個問題,尋找邏輯的共同的東西/件,可以從一個或兩個項目被移出,並創建既可以在別人之前建成第三個項目。把所有常見的東西放在那裏,你應該沒問題;那麼你的依賴關係應該是類似於以下內容的類型,其中只要在兩者之前編譯了Z或X,那麼它們無關緊要:(X - > Z < - Y)

0

你可以從兩個XML移動FetchDetails()到另一個項目,並參考這個項目和同步項目