原理很簡單:
一:定義外掛程式介面
二:實現外掛程式介面並建立不同工專案,使其在生成時生成不同的dll
三:主程式執行時根據介面名利用反射對外掛程式目錄的dll進行載入,載入完成後便可以使用外掛程式介面定義的方法或屬性了。
專案結構:
defaultplugin,posplugin兩個專案均為外掛程式,均實現了iplugin接可
iplugin介面
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.drawing;
using system.windows.forms;
namespace windemo.core
bool isload
image modulepicture
image modulepictureenter
image modulepictureclick
string modulename
dictionarychildnodes
iloadform formloader }}
用於載入外掛程式的類 pluginloader
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.reflection;
using system.io;
using system.windows.forms;
using system.collections;
namespace windemo.core
}return ret;
}public static void loadallplugins()
}if (attribute != null)
else throw new exception("未定義外掛程式屬性");
if (ok) break;}}
catch (exception err)
}plugins.sort((p1, p2) => );}}
}
iplugin的實現類posplugin類
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.drawing;
using windemo.core;
using system.windows.forms;
namespace defaultplugin
); _childnodes.add("選單四", (sender, e) =>
);_childnodes.add("選單三", (sender, e) =>
);_childnodes.add("選單二", (sender, e) =>
);_childnodes.add("選單一", (sender, e) =>);}
public image modulepicture
}public image modulepictureenter
}public image modulepictureclick
}public string modulename
}public dictionarychildnodes
}public bool isload
public iloadform formloader
set}
public plugininfoattribute plugininfo}}
此圖現在有兩個外掛程式
執行效果如下
引文** c#實現外掛程式式開發的乙個demo分享 - 鮮巨集 -
C 實現外掛程式式開發的乙個Demo分享
原理很簡單 一 定義外掛程式介面 二 實現外掛程式介面並建立不同工專案,使其在生成時生成不同的dll 三 主程式執行時根據介面名利用反射對外掛程式目錄的dll進行載入,載入完成後便可以使用外掛程式介面定義的方法或屬性了。專案結構 defaultplugin,posplugin兩個專案均為外掛程式,均...
C 實現外掛程式式開發的乙個Demo分享
原理很簡單 一 定義外掛程式介面 二 實現外掛程式介面並建立不同工專案,使其在生成時生成不同的dll 三 主程式執行時根據介面名利用反射對外掛程式目錄的dll進行載入,載入完成後便可以使用外掛程式介面定義的方法或屬性了。專案結構 defaultplugin,posplugin兩個專案均為外掛程式,均...
乙個關於 死鎖 的實現Demo
乙個死鎖的實現 public class mytestsisuo catch interruptedexception e system.out.println t1 get o1 需要資源o2 但是 t2 獨佔 未釋放 互相競爭資源 死鎖 synchronized o2 thread t2 new...