程式集載入和反射

2021-07-14 07:30:24 字數 642 閱讀 6387

元資料表是用一系列字段表,方法表,型別定義表組成的。可以利用system.reflection命名空間中包含的型別,可以寫**來反射這些元資料表。具體的反射機制我是這樣理解的:

首先應該清楚的了解到,system.reflection命名空間中的型別為程式集或模組中包含的換資料表提供了乙個物件模型

通過這個物件模型,我們就可以列舉出元資料表中的所有型別,針對這些型別,我們就可以獲得它的基型別,實現的介面…甚至利用system.reflection的其他型別,還可以解析對於的元資料表來查詢的字段,方法,屬性和事件。

事實上,只有少數類庫需要了解型別的定義才能提供豐富的功能。才適合用反射

缺點:由於反射嚴重依賴字串,所以會喪失編譯時的型別安全性.例如,執行type.gettype(「int」),要求通過反射在程式集中查詢名為「 int」的型別,**會通過編譯,但在執行時會返回null,因為clr只知「system.int32」不知「int」。

反射速度很慢。使用反射的時候,型別和成員在編譯的那個時候都是未知的;必須要用字串名稱標識每個型別及其成員,然後在執行的時候發現它們。

用反射呼叫成員也會影響效能。用反射呼叫方法時。首先必須將實參打包成陣列在內部,反射還得將這些實參解包到執行緒棧上。

基於上述的缺點,我們可以用如下的方法:

詳細的可以瀏覽

程式集載入和反射

最近一直都在看關於程式集載入和反射方面的資料,所以在這裡把我所學習到的東西記錄下來,方便自己以後複習,也給園子裡面不懂的朋友參考。net中反射在執行中過程中解析程式集中的元資料,獲得型別中的成員 包括字段 構造器 方法 屬性 事件等 資訊。把下面的類放在乙個類庫工程中,並編譯生成程式集 例如為cla...

談談 程式集載入和反射

最近一直都在看關於程式集載入和反射方面的資料,所以在這裡把我所學習到的東西記錄下來,方便自己以後複習,也給園子裡面不懂的朋友參考。net中反射在執行中過程中解析程式集中的元資料,獲得型別中的成員 包括字段 構造器 方法 屬性 事件等 資訊。把下面的類放在乙個類庫工程中,並編譯生成程式集 例如為cla...

談談 程式集載入和反射

最近一直都在看關於程式集載入和反射方面的資料,所以在這裡把我所學習到的東西記錄下來,方便自己以後複習,也給園子裡面不懂的朋友參考。net中反射在執行中過程中解析程式集中的元資料,獲得型別中的成員 包括字段 構造器 方法 屬性 事件等 資訊。把下面的類放在乙個類庫工程中,並編譯生成程式集 例如為cla...