public
class plugingmanager
ab = assembly.load(addinstream); //
載入記憶體中的dll
type types = ab.gettypes();
foreach (type t in types)}}
catch (exception ex)}}
}#endregion
}plugingmanager plug = new plugingmanager("
plugs
", "
garden.plugs.dll
", "
iplug
");var win = plug.plugins.toarray().firstordefault(m => ((type)m.gettype()).name.tolower() == this.tag.tostring().tolower());
methodinfo onshowdlg = ((type)win.gettype()).getmethod("
showself
");form cl = (form)onshowdlg.invoke(win, null);
cl.windowstate = formwindowstate.maximized;
cl.mdiparent = this;
cl.show();
foreach (object obj in plug.plugins)
上面是從記憶體中生成物件
//獲取程式集
assembly assembly = assembly.load("
環環環環環
");assembly assembly2 = assembly.loadfrom("
環環環環環.dll
");//
從程式集中獲取指定物件型別;
type type = assembly.gettype("
環環環環環.user
");//
使用activator建立例項(無引數建構函式)
var user1 = activator.createinstance(type);
//使用activator建立例項(帶引數建構函式)
var user2 = activator.createinstance(type, "
薄暮");
//使用assembly建立例項(無引數建構函式)
var user3 = assembly.createinstance("
環環環環環.user
");//
反射無參建構函式
constructorinfo constructor1 = type.getconstructor(new type {});
var user4 = constructor1.invoke(new
object );
//反射有參建構函式
constructorinfo constructor2 = type.getconstructor(new type );
var user5 = constructor2.invoke(new
object );
//呼叫public函式(無引數)
type.invokemember("
publicshow
",bindingflags.invokemethod | bindingflags.public | bindingflags.instance, null, user1,
null);
//呼叫public函式(帶引數)
string returnvalue =
type.invokemember("
getstring
",bindingflags.invokemethod | bindingflags.optionalparambinding, null, user1,
newobject ) as
string;
//呼叫靜態方法
string returnvalue2 =
type.invokemember("
staticmethod
", bindingflags.invokemethod | bindingflags.public | bindingflags.static,
null, null, new
object {}) as
string;
//呼叫私有方法 .
type.invokemember("
privateshow
",bindingflags.invokemethod | bindingflags.nonpublic | bindingflags.instance, null, user1,
newobject {});
//反射屬性
var name =
type.invokemember("
name
", bindingflags.getproperty | bindingflags.public | bindingflags.instance, null,
user1, new
object {}) as
string;
//設定屬性(設定name屬性為"新屬性")
type.invokemember("
name
", bindingflags.setproperty | bindingflags.public | bindingflags.instance, null,
user1, new
object );
//反射字段
string field =
type.invokemember("
field
", bindingflags.getfield | bindingflags.public | bindingflags.instance, null,
user1, new
object {}) as
string;
//設定字段(設定field欄位為"新字段")
type.invokemember("
field
", bindingflags.setfield | bindingflags.public | bindingflags.instance, null,
user1, new
object );
這是標準的用法,還挺好玩的吧
快取相關的東西
再顯示的開發中 如果之後一台快取伺服器,所以的key 和 value 都往一台機器進行set 和get 如果有多台快取伺服器呢 如何自定乙個合理的分配策略呢 關於快取 需要考慮的問題還有很多,我這裡先做乙個to do。ps 這裡貼一段,關於協助和你面的經典解釋 關於協變和逆變要從物件導向繼承說起。繼...
simulink的相關東西
m ary 表示,產生的值在0到m 1之間 sample time 當 時間設定為t時,產生的資料量為t sample time samples per frame 以幀為單位輸出時,每一幀資料的資料量。舉例 當如上圖,sample time為0.01時,時間設定為100s時,此時,產生的資料量為1...
相關的一些東西
這幾天一直在看關於http和前端效能優化相關的內容,今天先寫一篇關於http的文章,如果時間允許的話再接著把前端效能優化的寫完。畢竟還要留著時間去看小片嘛?接下來就是正文啦!瀏覽器輸入url後http請求返回的完整過程 就是下圖這個啦 這個可是我從某課網偷來的 從輸入位址到頁面渲染 在http的五層...