反射學習系列目錄
反射學習系列1-反射入門
反射學習系列2-特性(attribute)
反射學習系列3-反射例項應用
作者
reflection,中文翻譯為反射。這是.net中獲取執行時型別資訊的方式,.net的應用程式由幾個部分:『程式集(assembly)』、『模組(module)』、『型別(class)』組成,而反射提供一種程式設計的方式,讓程式設計師可以在程式執行期獲得這幾個組成部分的相關資訊,例如:assembly類可以獲得正在執行的裝配件資訊,也可以動態的載入裝配件,以及在裝配件中查詢型別資訊,並建立該型別的例項。type類可以獲得物件的型別資訊,此資訊包含物件的所有要素:方法、構造器、屬性等等,通過type類可以得到這些要素的資訊,並且呼叫之。methodinfo包含方法的資訊,通過這個類可以得到方法的名稱、引數、返回值等,並且可以呼叫之。諸如此類,還有fieldinfo、eventinfo等等,這些類都包含在system.reflection命名空間下。
一、type類於獲取型別資訊
system.type 類對於反射起著核心的作用。當反射請求載入的型別時,公共語言執行庫將為它建立乙個 type。您可以使用 type 物件的方法、字段、屬性和巢狀類來查詢有關該型別的所有資訊。
大家執行一下下面的**根據結果分析一下就能比較清楚的理解type了
二、獲取程式集元資料
assembly類定義了乙個程式集,它是乙個可重用、無版本衝突並且可自我描述的公共語言執行庫應用程式構造塊。因為程式集中是使用元資料進行自我描述的,所以我們就能通過其元資料得到程式集內部的構成。結合assembly和反射能夠獲取程式集的元資料,但是首先要將程式集裝入記憶體中。可以使用assembly類的多種靜態load方法引導程式集。
下面的程式顯示程式集的資訊
三、動態載入型別
早繫結是在編譯時繫結物件型別,而晚繫結是在執行時才繫結物件的型別。利用反射可以實現晚繫結,即動態載入型別,並呼叫他們的方法,下邊是msdn中的乙個例子,詳細的解釋資訊見注釋
反射學習系列1 反射入門
反射學習系列目錄 反射學習系列1 反射入門 反射學習系列2 特性 attribute 反射學習系列3 反射例項應用 作者 reflection,中文翻譯為反射。這是.net中獲取執行時型別資訊的方式,net的應用程式由幾個部分 程式集 assembly 模組 module 型別 class 組成,而...
反射學習系列
您清晰的元件化目標是否因在庫間共享過多型別資訊而落空?或許您需要高效的強型別化資料儲存,但如果每次物件模型發展後都需要更新您的資料庫架構,那會耗費很大成本,所以您更願意在執行時推斷出其型別架構嗎?您需要交付能接受任意使用者物件的元件,並以某種智慧型化的方式處理它們嗎?您希望庫的調方者能以程式設計方式...
反射學習系列3 反射例項應用
反射學習系列目錄 反射學習系列1 反射入門 反射學習系列2 特性 attribute 反射學習系列3 反射例項應用 作者例子這個東西其實挺難弄得,弄個簡單的,雖然能說明問題但卻容易讓人覺得沒實用價值,弄個有實用價值卻又往往牽扯很多別的技術甚至牽扯很多業務邏輯,看起來很複雜很難懂。在這裡我盡量追求幾個...