当前位置:编程学习 > C#/ASP.NET >>

循环引用的解决方法

项目架构:

系统中的各功能都是分开在每个dll中实现的,主程序中加载各个菜单对应的dll。对于一些重复性比较高的功能代码,可以写在一个主dll里供其他功能调用,直接引用主dll就可以实现。

 

Main.exe           主程序。

Core.dll              公共接口和存贮缓存等。

T1.dll                  功能1

T2.dll                  功能2

 

现在项目有这样的需求:

要求两个功能之间相互调用,即T1.dll中在T1.MainForm中点击Button1去调用T2.dll中T2.MainForm中的相应功能,反之亦然,T2.MainForm点击Button1调用T1.dll功能。

这时就遇到了问题,直接在工程中引用dll就会出现循环引用。所以得另辟蹊径。

 

解决方案:

利用反射调用dll,就避免了循环引用。不同功能间的相互通信可通过接口来解决。

 

具体实现:

Main.exe中用反射加载各个功能菜单,对各个Form进行实例化,缓存起来供其他功能调用。入口和实例均存在Core.MenuFactory.htMenu这个HashTable中。

 

再构造接口IInteraction

\接口IInteraction
public interface IInteraction
{
/// <summary>
/// 简单的交互
/// </summary>
void InterAction();

/// <summary>
/// 高级交互,可传递参数
/// </summary>
/// <param name="args"></param>
void InterAction(object [] args);
}

 

 

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,