添加此项目将导致循环依赖

时间:2014-03-03 15:22:04

标签: c# .net wpf .net-assembly

我有一个由两个程序集组成的WPF应用程序。

程序集A是一个wpf应用程序。

程序集B是一个3D应用程序,主要由A。

使用的公共API

程序集A引用程序集B。

现在当一个事件在程序集B上触发时,我需要在静态类应用程序中调用程序集A中的方法。

如果我尝试在B中添加对程序集A的引用,我会收到错误:

  

添加此项目将导致循环依赖

你对如何解决它有什么想法吗?

具体来说我想知道:

  • 如何从App.myMethod()
  • 致电A中的assembly B
  • 为了解耦类,我可以在程序集B上触发一个通用事件并在程序集A上捕获它吗?
  • 欢迎任何其他想法。

3 个答案:

答案 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中可能有一个定时事件,它基本上会侦听这些数据,然后根据需要提供更新。