一:反射的定義
審查元資料並收集關於它的型別資訊的能力。元資料(編譯以後的最基本資料單元)就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。
system.reflection命名空間包含的幾個類,允許你反射(解析)這些元資料表的**
system.reflection.assembly
system.reflection.memberinfo
system.reflection.eventinfo
system.reflection.fieldinfo
system.reflection.methodbase
system.reflection.constructorinfo
system.reflection.methodinfo
system.reflection.propertyinfo
system.type
層次模型:
二:獲取型別資訊:
1三:獲取程式集資訊class
myclass25
public
int myproperty 6}
78//獲取型別資訊
9protected
void button1_click(object
sender, eventargs e)10:
", item.membertype, item));
32 response.write("");
33}34 }
protected void button2_click(object sender, eventargs e)
}
四:反射呼叫方法
protected void page_load(object sender, eventargs e)
);//呼叫方法
system.reflection.methodinfo mi1 = t.getmethod("runjs");
mi1.invoke(t, new object );//呼叫方法
}
五:反射呼叫使用者/自定義控制項
protected override void oninit(eventargs e)
private void createcontrol()
protected void button1_click(object sender, eventargs e)
));response.write(selectedvalue);
break;}}}}}
六:反射實現工廠模式
public partial class 反射 : system.web.ui.page
}public static class rawgenericfactory
}public inte***ce itestinte***ce
public class testclass : itestinte***ce
public override string tostring()
public string dosomething()
}
七:自定義orm框架
[orm.table("testorm")]
public class testorm
[orm.colum("username", dbtype.string)]
public string username
[orm.colum("password", dbtype.string)]
public string password
[orm.colum("createdtime", dbtype.datetime)]
public datetime createdtime
}protected void button3_click(object sender, eventargs e)
;orm.ormhelp h=new orm.ormhelp();
h.insert(t);
}namespace orm
public tableattribute(string tablename)
////// 對映的表名(表的全名:模式名.表名)
///
public string tablename
get}
}[attributeusageattribute(attributetargets.property, inherited = false, allowmultiple = false)]
public class columattribute : attribute
public columattribute(string columname)
: this()
public columattribute(string columname, dbtype dbtype)
: this(columname)
//列名
public virtual string columname
get}
//描述一些特殊的資料庫型別
public dbtype dbtype
set }}
public class ormhelp}}
//拼插入操作字串
C 反射機制
反射的概述 反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 syste...
C 反射機制
反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 system.refl...
C 反射機制
參考 本文的實現基於上述部落格中的 修改而來。本文實現的反射機制,其實就是根據字串,構造乙個類物件 classinfo是記錄類名與其相應的工廠函式 dynbase是實現反射機制的公共基類,每個繼承它的子類需要在建構函式中傳遞其類名的字串給dynbase的建構函式 templateclass dynb...