2011-05-12 82 views
2

我們有許多項目的解決方案。解決C#和C++/CLI項目之間的循環項目依賴關係?

在一個特定的情況下,我們有兩個項目: 1)C#項目,完成大部分工作 2)C++/CLI項目充當中間人的一些原生的C++代碼

C#代碼調用C++包裝器,一切正常。

但是,我們正在引入一些新功能。在C++包裝器(項目#2)的託管端,它需要項目#1中託管C#代碼中的一些靜態方法。但是,Visual Studio不會讓我們將這兩個項目相互關聯,因爲它抱怨循環項目引用。然而,沒有通知類別參考。

有沒有解決這個問題,不需要第三個項目作爲中介?

+0

爲你的新功能編譯一個DLL(或多個DLL)... 它的作弊,它基本上創造了一箇中介,但它不是一個項目。 – soandos 2011-05-12 19:24:26

+0

是的,忘了提及,我們或多或少不允許二進制引用爲我們的內部的東西,所以它必須以某種方式參考項目。 – Joe 2011-05-12 19:27:04

回答

5

你可以讓A取決於B.爲了簡單起見,可以說A.EXE取決於B.DLL。然後,當A最初調用B時,它可以給它一個在B中定義的某種類型或接口的對象,然後B可以在稍後的時間點轉向並回調A.

換句話說,B定義了一個基類或接口,例如「我想要的東西只有A可以做」但不實現它。然後讓A實現它,傳遞給你,然後調用它。這繞過了循環依賴,沒有第三個項目。這適用於任何一對託管項目。