C# 添加此项目将导致循环依赖关系
我有一个由两个程序集组成的WPF应用程序 程序集A是一个wpf应用程序 Assembly B是一个3D应用程序,带有一个主要由a使用的公共API 程序集A引用了程序集B 现在,当程序集B上触发事件时,我需要在静态类应用程序中调用程序集a中的方法 如果尝试在B中添加对程序集a的引用,则会出现错误: 添加此项目将导致循环依赖关系 你对如何解决这个问题有什么想法吗 具体而言,我想知道:C# 添加此项目将导致循环依赖关系,c#,.net,wpf,.net-assembly,C#,.net,Wpf,.net Assembly,我有一个由两个程序集组成的WPF应用程序 程序集A是一个wpf应用程序 Assembly B是一个3D应用程序,带有一个主要由a使用的公共API 程序集A引用了程序集B 现在,当程序集B上触发事件时,我需要在静态类应用程序中调用程序集a中的方法 如果尝试在B中添加对程序集a的引用,则会出现错误: 添加此项目将导致循环依赖关系 你对如何解决这个问题有什么想法吗 具体而言,我想知道: 如何从程序集B在A中调用App.myMethod() 为了解耦这些类,我可以在程序集B上触发一个泛型事件并在程序集
- 如何从
在A中调用程序集B
App.myMethod()
- 为了解耦这些类,我可以在程序集B上触发一个泛型事件并在程序集a上捕获它吗
- 欢迎提出任何其他想法
- 听起来像是设计问题。由于我不知道您实施过程中的具体细节,请将以下内容作为指导方针/想法
当事件在B上触发时,我假设它会创建一些数据。如果您可以将此数据存储在数据库或类似数据库中,然后在应用程序a中可能会有一个定时事件,该事件主要侦听此数据,然后根据需要提供更新
如何从程序集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订阅该事件。如果您添加对已构建DLL的引用,而不是项目,则可以添加该事件。事件是如何创建的?作为初始化的一部分创建时,是否可以将
静态类
传递到事件中?控制模式反转的设计就是为了处理这种情况。我可以更改两个程序集的源代码。现在程序集B中的事件处理程序是私有的void OnTouchDownHandler(对象发送者,Windows7.Multitouch.TouchEventArgs e){AddTouchDown(e.Id,e.Location);}能否将静态方法移动到B或a和B都引用的第三个程序集?谢谢juharr,有趣的方法,但我不能移动静态B也不能创建第三个程序集。您仍然具有循环依赖关系,并且必须单独构建每个项目。该项目仍然可以在同一解决方案中同时构建,只是不能添加为项目引用。它将像这样工作,这不是最优雅的解决方案。