我有一个由两个程序集组成的WPF应用程序。
程序集A是一个wpf应用程序。
程序集B是一个3D应用程序,主要由A。
使用的公共API程序集A引用程序集B。
现在当一个事件在程序集B上触发时,我需要在静态类应用程序中调用程序集A中的方法。
如果我尝试在B中添加对程序集A的引用,我会收到错误:
添加此项目将导致循环依赖
你对如何解决它有什么想法吗?
具体来说我想知道:
App.myMethod()
?assembly B
答案 0 :(得分:9)
如何从装配B中调用A中的
App.myMethod
?
如果A取决于B,则不能。
如果事件是解雇来自B中的某个类,那么你应该从A中的某个类订阅到该事件:
代码在A:
var classB = new ClassB(); // presumably in your code in A somewhere
classB.MyEvent += new EventHandler(this.HandleEventFromB);
public void HandleEventFromB(object sneder, EventArgs args)
{
ClassA.StaticMethod();
}
这样B不依赖于A.
您可能需要将B中的事件“冒泡”到某个公开曝光的事件,以便从A订阅它。
答案 1 :(得分:2)
如果添加对构建的DLL的引用而不是项目,则可以添加它。
答案 2 :(得分:0)
听起来像设计问题。由于我不了解您实施中的具体细节,请将以下内容作为指导/想法。
当事件在B上触发时,我假设它创建了一些数据。如果您可以将这些数据存储在数据库或类似数据库中,那么在应用程序A中可能有一个定时事件,它基本上会侦听这些数据,然后根据需要提供更新。