一 型別(type) 物件是什麼
比如 object x; x是物件,object就是它的型別,在程式中如何描述型別這個概念呢?就是type(system.type)。要獲取某個類的型別可以用typeof()操作符
object a;object b;
datatable t;
type atype = typeof(object);type btype = typeof(object);ttype = typeof(datatable);
atype==btype!=ttype;
二 程式集(assembly)
就是你ide生成的.exe或.dll檔案的執行時就叫程式集。所有的**都在程式集中。你可以通過assembly.load()系列函式動態引導程式集(這一步是動態+載**的前提,因為所有的**都在程式集中)。
三 動態載入
我們普通呼叫**是: 物件名.方法名(引數列表);
class a
public static void main(string args)
} 用反射動態呼叫**是
//引導程式集
system.reflection.assembly asm = assembly.loadfile(assemblypath);
//獲取型別
type atype = asm.gettype( "名字空間.類名 ");
//獲取沒有引數的建構函式
system.reflection.constructorinfo conn = t.getconstructor(new type[0]);
//呼叫沒有引數的建構函式,invoke返回object它其是a類
object a1 = conn.invoke(new object[0]);
//獲取引數型別為int,函式名為func的方法
methodinfo method = t.getmethod( "func ",new type);
//在a1上呼叫func方法,引數為1
method.invoke(a1,new object);
四 元資料
.net生成的il**中標明了在這個(exe,dll)檔案中所有的class(類) method(方法)attribute(屬性) property(類屬性)的簽名和呼叫方法資訊,這些資訊就叫做元資料。所謂的reflection反射,就是利用元資料,可以了解到某個assembly(基本等同檔案)中的class。。。。。 (就是上面那一串咚咚)資訊和呼叫方法。
五 .net framework
在.net framework中反射類基本都在system.reflection中。system.type是反射的核心類.
與它相關的還有system.attribute命名空間。
JAVA反射基礎知識整理
2.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...
C 基礎知識回顧 反射(1)
反射 reflection 是一種允許使用者獲得型別資訊的c 特性。術語 反射 源自於它的工作方式 type物件對映它所代表的底層物件。對type物件進行查詢可以獲得 反射 與型別相關的資訊。反 射是一種 功能強大的機制,它允許學習和使用只在執行時才能知道的型別功能。這些是官方定義,其實說白了,反射...
基礎知識《八》 Java反射機制
1.反射可以做什麼 2.反射相關的api 3.獲取class執行時類的例項的三種方法 1 通過執行時類本身的.class屬性 class clazz person.class 2 通過執行時類的物件獲取 person p new person class clazz p.getclass 3 通過c...