C 實現外掛程式式開發的乙個Demo分享

2021-09-24 13:51:44 字數 2283 閱讀 4875

原理很簡單:

一:定義外掛程式介面

二:實現外掛程式介面並建立不同工專案,使其在生成時生成不同的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...