反射,reflection,通過它我們可以在執行時獲得各種資訊,如程式集、模組、型別、字段、屬性、方法和事件
通過對型別動態例項化後,還可以對其執行操作
簡單來說就是用string可以在runtime為所欲為的東西,實際上就是乙個.net framework內建的萬能工廠
一般用於外掛程式式框架程式和設計模式的實現,當然反射是一種手段可以充分發揮其能量來完成你想做的任何事情(前面好象見過一位高人用反射呼叫乙個官方類庫中未說明的函式。。。)
示例:
反射例項化物件並呼叫其方法,屬性和事件的反射呼叫略去code
using
system;
using
system.collections.generic;
using
system.text;
namespace
example25lib
public
class1(
string
name,
intage)
public
void
changename(
string
newname)
public
void
changeage(
intnewage)
public
override
string
tostring()
, age:
", name, age);}}
}
結果:code
using
system;
using
system.collections.generic;
using
system.text;
//注意新增該反射的命名空間
using
system.reflection;
namespace
example25}//
例項化物件
object
tmpobj
=tmpconsinfo.invoke(tmpparams);
console.writeline(tmpobj);
//獲取所有方法並執行
foreach
(methodinfo tmpmethod
intmptype.getmethods())
if(tmpparaminfos[i].parametertype.fullname =="
system.int32")
}tmpmethod.invoke(tmpobj, tmpparams);}//
呼叫完方法後再次列印物件,比較結果
console.writeline(tmpobj);}}
console.readline();}}
}
name: clark, age: 0
name: clark zheng, age: 27
什麼是反射
反射 可以獲得型別 類,結構,委託,介面和列舉 的成員,包括方法,屬性,建構函式,還可以獲得成員的名稱,限定符和引數,可以直接建立物件。class program stu s2 newstu 元資料 type t s.gettype var ps t.getproperties 屬性 var ms ...
什麼是反射
框架 半成品軟體,可以在框架的基礎上進行軟體開發,簡化編碼 反射 將類的各個組成部分封裝為其他物件,這就是反射機制 好處 在程式的執行過程中去操作這些物件 可以解耦,提高程式的可擴充套件性 獲取位元組碼檔案class物件的方式 獲取功能 1.獲取成員變數們 2.獲取構造方法們 3.獲取成員方法們 4...
什麼是菲涅耳反射?
在現實社會中往往有這樣的一種現象?菲涅爾 是乙個人的名字,由於他發現了反射折射的光學現象,這個現象就用這個人的名字命名。關於 菲涅爾 現象 如果你站在湖邊,低頭看腳下的水,你會發現水是透明的,反射不是特別強烈,如果你看遠處的湖面,你會發現水並不透明,這說明反射非常強烈。這就是 菲涅爾效應 ps 這裡...