c 高階技術 反射

2021-06-09 11:46:38 字數 1201 閱讀 8325

反射? 難道是物理中光的反射??  no、no、no !!! 這個「反射」和物理一點關係都沒有!!

那什麼是反射呢? 我個人的理解是:在程式中 動態的新增程式的功能(新增dll檔案) 無需在源**中新增 從而實現為程式的功能「公升級」。

說的有些官方了 下面我舉幾個例子

我們都玩過遊戲 就拿我以前玩的qq飛車來說 遊戲廠商會隔一段時間對遊戲進行公升級 比如說**、賽道等 由於qq飛車的客戶端已經

在遊戲公升級完畢的時候 有沒有注意到 在遊戲的安裝目錄下 多了幾個資料夾 資料夾中又多了幾個.dll問檔案

哈哈 以前沒有注意到的可以現在去看一下 沒錯 這就是傳說中的「反射」!!

暈!! 就多了幾個檔案 qq飛車中就能有那麼多** 和 那麼多複雜的賽道?

沒錯 下面我來大概說一下反射的原理吧 我個人的理解 比較膚淺 :

在我們寫主程式的時候 就比如說qq飛車的主程式 裡面的功能並不是寫死的 而是留有乙個類似於對外介面的東西

這樣做的目的就是為了以後能為主程式新增更多的功能

在主程式中 分為以下幾個步驟:

1. 窗體在載入的時候 搜尋dll目錄下的所有的.dll檔案

2. 獲取.dll檔案中具有外掛程式功能的類

3. 通過呼叫外掛程式中類的方法 來實現程式中的功能擴充套件

4. 開發主程式的人必去做乙個約定:所有為

程式開發外掛程式的人 必須將外掛程式執行的方法命名為固定的乙個名字

5. 主程式的開發人員不管開發者外掛程式的人定義了多少個類 多少個方法 在主程式中 只去呼叫規定好的那個名字的方法 這就是主程式與外掛程式開發者之間的乙個約定

主程式**:   

// 窗體在載入的時候

private void form1_load(object sender, eventargs e)}}

}///

///給增加的功能實現單擊事件

//////

///void tsoitem_click(object sender, eventargs e)

定義的介面:

public inte***ce iexecute

//////外掛程式執行的方法

///void execute(textbox text);

}其實我們程式設計師每天都在應用反射

我們在使用.的時候 就是應用了反射 當我們.的時候 會反射當前程式的元資料 將所有的方法,類等資訊全部顯示出來 方便程式設計師使用 大大提高了

程式設計效率!

C 反射技術應用

反 射 reflection 是.net中的重要機制,通過放射,可以在執行時獲得.net中每乙個型別 包括類 結構 委託 介面和列舉等 的成員,包括 方法 屬性 事件,以及建構函式等。還可以獲得每個成員的名稱 限定符和引數等。有了反射,即可對每乙個型別瞭如指掌。如果獲得了建構函式的資訊,即可直 接建...

C 反射技術簡介

如果你要獲取到這個類的物件例項可以這麼做 以string類為例子 string str system.string string exp string activator.createinstance str 如果你要得到這個類的型別資訊可以這麼做 type exptype type.gettype...

C 高階程式設計之「反射」

一,定義 反射技術,能夠讓託管 在執行時檢視元資料以及 的各方面資訊。二,常用方法 1,獲取物件方法 必須以public修飾的方法,不包括建構函式 2,獲取物件屬性 3,獲取物件的父類 附示例 using system using system.collections.generic using s...