反射 基礎知識

2021-06-05 01:34:30 字數 1496 閱讀 7726

一   型別(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...