【发布时间】:2014-03-03 15:22:04
【问题描述】:
我有一个由两个程序集组成的 WPF 应用程序。
Assembly A 是一个 wpf 应用程序。
Assembly B 是一个 3D 应用,带有一个主要由 A 使用的公共 API。
程序集 A 引用了程序集 B。
现在,当程序集 B 上触发事件时,我需要在静态类应用程序中调用程序集 A 中的方法。
如果我尝试在 B 中添加对程序集 A 的引用,则会出现错误:
添加这个项目会导致循环依赖
你对如何解决它有什么想法吗?
具体我想知道:
- 如何从
assembly B调用A中的App.myMethod()? - 为了解耦类,我可以在程序集 B 上触发一个通用事件并在程序集 A 上捕获它吗?
- 欢迎任何其他想法。
【问题讨论】:
-
事件是如何创建的?当您创建它作为初始化的一部分时,您可以将
static class传递到您的事件中吗? -
控制模式反转就是为了应对这种情况而设计的。
-
我可以更改两个程序集的源代码。现在来自程序集 B 的事件处理程序是 private void OnTouchDownHandler(object sender, Windows7.Multitouch.TouchEventArgs e) { AddTouchDown(e.Id, e.Location); }
-
您能否将静态方法移至 B 或 A 和 B 都引用的第三个程序集?
-
感谢 juharr,有趣的方法,但我不能移动静态 B 也不能创建第三个程序集
标签: c# .net wpf .net-assembly