【问题标题】:Solving circular project dependency between C# and C++/CLI projects?解决 C# 和 C++/CLI 项目之间的循环项目依赖关系?
【发布时间】:2011-05-12 19:20:25
【问题描述】:

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

在一种特殊情况下,我们有两个项目: 1) 完成大部分工作的 C# 项目 2) 一个 C++/CLI 项目,充当一些原生 C++ 代码的中间人

C# 代码调用 C++ 包装器,一切正常。

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

这个问题有没有不需要第三个项目作为中介的解决方案?

【问题讨论】:

  • 为您的新功能编译一个 dll(或多个 dll)...它的作弊之处在于它基本上创建了一个中介,但它不是一个项目。
  • 是的,忘了说,我们或多或少不允许对我们内部的东西进行二进制引用,所以它必须以某种方式成为项目引用。

标签: c# visual-studio-2010 c++-cli circular-dependency


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 2012-02-22
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多