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