【发布时间】:2018-02-22 18:58:11
【问题描述】:
我有两个项目:项目 A 和外部项目 B(通过“在 Visual Studio 中添加现有项目”添加)。项目 A 有对项目 B 的引用,但项目 B 没有对项目 A 的引用。我有项目 A 中的一个 WinForm 文本框,我希望项目 B 能够向其中写入文本。因为项目 B 没有对项目 A 的引用,所以我无法调用我在项目 A 中创建的将文本添加到文本框。
我的问题:是否可以让项目 B 调用该方法或写入该文本框而不添加项目引用?
【问题讨论】:
-
不知道为什么你需要一个循环引用(你不能)...通常项目 A 是 UI 而项目 B 是一个类库。您应该能够从项目 A 调用项目 B 中的逻辑来呈现数据。其他方法是 API、共享数据库等。您的具体用例是什么?
-
考虑使用您要在其中重用的 winform 创建一个新的“通用”项目。这样项目 A 和 B 可以引用这个公共项目。另一种解决方案可能是使用 [link] (docs.microsoft.com/en-us/dotnet/framework/mef)
-
@LukeHutton 项目 A 是 UI。项目 A 调用项目 B 中的构造函数,该构造函数开始一些数据处理 - 我想使用项目 A 中的 UI 文本框向用户直观地显示处理信息。我正在开发安装程序 - 来自项目 B 的处理信息将是显示以让用户知道当前正在做什么。
-
哦,我明白了,用例使它更清晰。有很多方法可以做到这一点。与其让项目 B 关心 UI,它实际上应该只做它的工作并报告它当前的进度(关注点分离)。 UI 将监听单独的线程并更新视图。参见
IProgress模式,例如simplygenius.net/Article/AncillaryAsyncProgress -
在项目
B中添加ProgressChanged事件。然后在项目A中为该事件附加一些逻辑。
标签: c# winforms visual-studio events delegates