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

2021-08-31 08:00:44 字數 2605 閱讀 2257

原理很簡單:

一:定義外掛程式介面

二:實現外掛程式介面並建立不同工專案,使其在生成時生成不同的dll

三:主程式執行時根據介面名利用反射對外掛程式目錄的dll進行載入,載入完成後便可以使用外掛程式介面定義的方法或屬性了。

專案結構:

defaultplugin,posplugin兩個專案均為外掛程式,均實現了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

imagemodulepicture

imagemodulepictureenter

imagemodulepictureclick

string

modulename

dictionary

<

string

,eventhandler

>

childnodes

iloadformformloader}}

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

newexception(

"為定義外掛程式屬性");

if(ok)

break;}

}catch

(exceptionerr)

}plugins.sort((p1,p2)

=>);}

}}

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

imagemodulepicture

}public

imagemodulepictureenter

}public

imagemodulepictureclick

}public

string

modulename

}public

dictionary

<

string

,eventhandler

>

childnodes

}public

bool

isload

public

iloadformformloader

set}

public

plugininfoattributeplugininfo}}

此圖現在有兩個外掛程式

執行效果如下

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...