【问题标题】:Use Circular reference使用循环参考
【发布时间】:2016-04-01 12:42:20
【问题描述】:

我想在 Project 2 (c# Windows Form) 中使用 Project 1 (VB.NET) 的一些代码,反之亦然。我知道我们无法创建循环引用,但有没有其他方法可以实现?

【问题讨论】:

  • 我假设 VB.NET 项目处理业务逻辑,而 C# 项目是 UI 部分?如果是这样,如果您将 UI 逻辑带入业务类,就会出现非常错误的情况。也就是说,您可以只创建第三个项目,它引用项目 1 和 2 上的所有类。
  • 第三个项目+1。要么第三个引用这两个,要么从你想要引用的内容中取出并从该代码中制作 dll。

标签: c# vb.net circular-reference


【解决方案1】:

首先,循环引用意味着错误的设计。如果您需要这样的东西,您必须通过以下方式之一更改您的设计:

1.提取“循环”代码

一般来说,创建另一个库,其中包含从两个“循环”库中调用的函数。然后让 Project1 和 Project2 都依赖于新创建的 Project3。

2。使用回调

仅使一个库依赖于第二个库 - 没有任何代码示例,很难决定哪个应该依赖于其他库,但是从“Windows 窗体”我认为,如果 Project2 依赖于它会更好在项目 1 上。 所以这意味着,Project2 知道 Project1 的一切。然后,如果您需要将 Project1 中的某些内容调用回 Project2,只需在初始化期间提供回调即可。 例如。 Project1 包含函数,它会进行一些长时间的计算,并且您希望在完成时收到通知。好的,没问题。 Project2 通过回调(搜索委托)开始操作并继续其自己的工作。当 Project1 中的函数完成时,它使用提供的回调从 Project2 调用函数(即使它不知道该函数,但没有必要,因为编译器管理,不能提供“不兼容”函数作为回调)。

很难给你更多的建议,因为你没有提供任何代码。如果您需要更多帮助,请使用一些简化示例更新您的问题。

【讨论】:

  • 看看我的两个表单项目。我将主窗体的实例传递给子窗体,这样两个窗体就可以在它们之间发送数据:stackoverflow.com/questions/36251695/…
  • 好的,那里的代码有点乱,但据我了解,您不想共享数据。您只希望 Form2 显示来自 Form1 的列表。这根本不是循环引用的情况。使 Form2 构造函数从 Form1 中获取列表作为参数,你就拥有了。
猜你喜欢
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2021-12-02
相关资源
最近更新 更多