所有的.Net編譯器在產(chǎn)生模塊(Modules)的目標(biāo)代碼時(shí)都會(huì)產(chǎn)生有關(guān)類型的元數(shù)據(jù)(metadata), 這種元數(shù)據(jù)被捆綁在模塊目標(biāo)代碼上(多個(gè)模塊組成assemblies, 一個(gè)assembly是.Net下控制的基本單位,也是類型對(duì)象識(shí)別的基本單位), 這種元數(shù)據(jù)可以通過(guò).Net環(huán)境下的reflection對(duì)象訪問(wèn). System.Reflection名字空間下包含了可以訪問(wèn)這種數(shù)據(jù)的多種類.
使用reflection訪問(wèn).Net元數(shù)據(jù)和使用ITypeLib/ITypeInfo訪問(wèn)COM對(duì)象的類型庫(kù)數(shù)據(jù)非常類似. 例如, 決定類型數(shù)據(jù)的大小, 通過(guò)(程序上下文/進(jìn)程/機(jī)器)邊界列集數(shù)據(jù)傳遞.
所以, 可以使用Reflection對(duì)象動(dòng)態(tài)引用方法(可以查看System.Type.InvokeMember), 甚至還可以動(dòng)態(tài)地在運(yùn)行時(shí)產(chǎn)生類型(System.Reflection.Emit.TypeBuilder) |