我们有一个包含许多项目的解决方案。
在一个特例中,我们有两个项目: 1)完成大部分工作的C#项目 2)C ++ / CLI项目,充当某些本机C ++代码的中间人
C#代码调用C ++包装器,一切都很好。
但是,我们正在引入一些新功能。在C ++包装器(项目#2)的托管端,它需要在项目#1中的托管C#代码中使用一些静态方法。但是,Visual Studio不会让我们相互关联这两个项目,因为它抱怨循环项目引用。但是没有循环类引用。
这个问题是否有任何解决方案不需要第3个项目作为中间人?
答案 0 :(得分:5)
你可以让A依赖B.为简单起见,我们假设A.EXE依赖于B.DLL。然后当A最初调用B时,它可以给它一个在B中定义的某种类型或接口的对象,然后B可以转向并在稍后的某个时刻回调到A.
换句话说,B定义了一个基类或接口,例如“我想要只有A可以做的事情”但不实现它。然后让A实现它,将它传递给你,然后调用它。这绕过了循环依赖,没有第三个项目。这适用于任何一对托管项目。