解决C#和C++/CLI项目之间的循环项目依赖性?

Joe*_*Joe 2 c# c++-cli circular-dependency visual-studio-2010

我们有一个包含许多项目的解决方案.

在一个特定情况下,我们有两个项目:1)完成大部分工作的AC#项目2)一个C++/CLI项目,充当一些本机C++代码的中介

C#代码调用C++包装器,一切都很好.

但是,我们正在引入一些新功能.在C++包装器(项目#2)的托管端,它需要在项目#1中的托管C#代码中使用一些静态方法.但是,Visual Studio不会让我们相互关联这两个项目,因为它抱怨循环项目引用.但是没有循环引用.

有没有解决这个问题的方法,不需要第三个项目作为中间人?

Ric*_*key 5

你可以让A依赖于B.为简单起见,我们假设A.EXE依赖于B.DLL.然后当A最初调用B时,它可以给它一个在B中定义的某种类型或接口的对象,然后B可以转向并在稍后的某个时刻回调到A.

换句话说,B定义了一个基类或接口,例如"我想要只能A做的东西",但不实现它.然后让A实现它,将它传递给你,然后调用它.这绕过了循环依赖,没有第三个项目.这适用于任何一对托管项目.