C 反射相關的東西

2022-02-26 13:42:32 字數 3266 閱讀 7495

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的五層...