C 反射機制

2021-07-02 16:14:42 字數 3277 閱讀 1879

一:反射的定義

審查元資料並收集關於它的型別資訊的能力。元資料(編譯以後的最基本資料單元)就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。

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