C 基礎語法 反射

2021-10-12 19:53:22 字數 2357 閱讀 7098

參考文獻

乙個執行的程式,檢視本身的元素或其他型別的元資料的行為叫做反射

mvc、ioc、orm、aop 這些都用到反射。

class

baseclass

class

derivedclass

:baseclass

static

void

main

(string

args)

;foreach

(var v in bca)")

; fieldinfo[

] fi = t.

getfields()

;foreach

(var f in fi)")

;}console.

writeline();}}

輸出結果:

object type:baseclass

file :basefield

object type:derivedclass

file :derviedfield

file :basefield

成員成員型別

描述name

屬性返回型別的名字

namespace

屬性返回型別的命名空間

assembly

屬性返回宣告型別的資料集

getfields

方法返回型別的字段列表

getproperties

方法返回型別的屬性列表

getmethods

方法返回型別的方法列表

4.1 dll 檔案的讀取

通過程式集名稱返回assembly物件

assembly ass = assembly.

load

("classlibrary831");

通過dll檔名稱返回assembly物件

assembly ass = assembly.

loadfrom

("classlibrary831.dll");

通過assembly獲取程式集中類

type t = ass.

gettype

("classlibrary831.newclass");

//引數必須是類的全名

通過assembly獲取程式集中所有的類

type[

] t = ass.

gettypes()

;

4.2 具體的例子

1. 目錄結構

2.**

static

void

main

(string

args)

{// 載入 dll 檔案

// 這個是直接動態載入

assembly assembly = assembly.

load

("liba");

// 和上面的區別是這個得用 dll 檔案

assembly assembly1 = assembly.

loadfrom

("liba.dll");

// 用絕對路徑引入

assembly assembly2 = assembly.

loadfile()

;var tpye = assembly2;

console.

writeline

(tpye.fullname)

;// 獲取型別(這一步要在獲得 dll 檔案的基礎上進行)

type type = assembly.

gettype

("liba.class1");

object o = activator.

createinstance

(type)

;// 必須是個type型別,簡單點說,必須是個類。

console.

writeline

(type.name)

;// 用介面做強制規範,然他能 「點「 出來

iaclasscs rel = type as iaclasscs;

rel.

getname()

;//object mm = activator.createinstance(type);

[1]

[2]

C 基礎 反射

反射指程式可以訪問 檢測和修改它本身狀態或行為的一種能力。程式集包含模組,而模組包含型別,型別又包含成員。反射則提供了封裝程式集 模組和型別的物件。您可以使用反射動態地建立型別的例項,將型別繫結到現有物件,或從現有物件中獲取型別。然後,可以呼叫型別的方法或訪問其字段和屬性。優點 1 反射提高了程式的...

C 基礎 反射

反射的實現主要依賴於微軟提供的兩個命名空間 system.reflection 和system.type 兩個命名空間 反射 就是動態的獲取程式集,並獲取其中型別的元資料,然後訪問該型別的過程。可以在執行時 建立 訪問 呼叫 型別。反射在實際應用中通常被用於 深複製實現,資料庫datatable 轉...

C 基礎 反射

記錄一下放射的一些東西把,之前都是學了記在筆記本上,現在整理上來,當作是複習和知新。反射的實現主要依賴於微軟提供的兩個命名空間 system.reflection 和system.type 兩個命名空間 反射 就是動態的獲取程式集,並獲取其中型別的元資料,然後訪問該型別的過程。可以在執行時 建立 訪...