reflection,中文翻譯為反射。
這是.net中獲取執行時型別資訊的方式,.net的應用程式由幾個部分:『程式集(assembly)』、『模組(module)』、『型別(class)』組成,而反射提供一種程式設計的方式,讓程式設計師可以在程式執行期獲得這幾個組成部分的相關資訊,例如:
assembly類可以獲得正在執行的裝配件資訊,也可以動態的載入裝配件,以及在裝配件中查詢型別資訊,並建立該型別的例項。
type類可以獲得物件的型別資訊,此資訊包含物件的所有要素:方法、構造器、屬性等等,通過type類可以得到這些要素的資訊,並且呼叫之。
methodinfo包含方法的資訊,通過這個類可以得到方法的名稱、引數、返回值等,並且可以呼叫之。
諸如此類,還有fieldinfo、eventinfo等等,這些類都包含在system.reflection命名空間下。
反射指程式可以訪問、檢測和修改它本身狀態或行為的一種能力。
程式集包含模組,而模組包含型別,型別又包含成員。反射則提供了封裝程式集、模組和型別的物件。
您可以使用反射動態地建立型別的例項,將型別繫結到現有物件,或從現有物件中獲取型別。然後,可以呼叫型別的方法或訪問其字段和屬性。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.reflection;
namespace 反射1
set}
public
int age
set}
public
char gender
set}
public
student()
public
student
(string name,
int age,
char gender)
public
void
showinfomation()
年齡:性別:"
,name,age,gender);}
}class
program
//獲取類中的屬性
propertyinfo[
] propinfoarr = studenttype.
getproperties()
;foreach
(var item in propinfoarr)
//獲取到類中的方法 包含父類中的虛方法
methodinfo[
] methodinfoarr = studenttype.
getmethods()
;foreach
(var item in methodinfoarr)
propertyinfo propname = studenttype.
getproperty
("name");
propname.
setvalue
(studentobj,
"jack");
propertyinfo propage = studenttype.
getproperty
("age");
propage.
setvalue
(studentobj,20)
;propertyinfo propgender = studenttype.
getproperty
("gender");
propgender.
setvalue
(studentobj,
'男')
;methodinfo methodshow = studenttype.
getmethod
("showinfomation");
methodshow.
invoke
( studentobj,
null);
}}}
c語言程式設計(19)
字串 字元陣列 1 使用字串初始化字元陣列 char ch hello world scanf s ch printf s ch 2 字串處理函式 gets ch 指標變數指向字串 char str hello 使用字串常量對字元指標進行初始化 str str 2 str world 等價於char...
C語言程式設計基礎
目錄 第一章 c語言程式設計基礎 c語言國際標準定義 c語言標準庫 c程式的建立過程 最新版本有iso iec9899 2011文件定義,一般稱為c11 標準庫在一系列標準檔案 標頭檔案中指定,標頭檔案的副檔名總是.h,為了使一組標準功能可用於c程式檔案,只需要將對應的標準標頭檔案包含進來。3 編譯...
C語言網路程式設計基礎
一 基礎知識介紹 tcp 傳輸控制協議 和udp 使用者資料報協議是網路體系結構tcp ip模型中傳輸層一層中的兩個不同的通訊協議。tcp 傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,tcp套介面是位元組流套介面 stream socket 的一種。udp 使用者資料報...