程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 循環引用的解決方法

循環引用的解決方法

編輯:C#入門知識

項目架構:

系統中的各功能都是分開在每個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);
}

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved