什么是映射(reflection)?
發(fā)表時(shí)間:2024-02-08 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]所有的.Net編譯器在產(chǎn)生模塊(Modules)的目標(biāo)代碼時(shí)都會(huì)產(chǎn)生有關(guān)類(lèi)型的元數(shù)據(jù)(metadata), 這種元數(shù)據(jù)被捆綁在模塊目標(biāo)代碼上(多個(gè)模塊組成assemblies, 一個(gè)assembly是.Net下安全控制的基本單位,也是類(lèi)型對(duì)象識(shí)別的基本單位), 這種元數(shù)據(jù)可以通過(guò).Net環(huán)境下的r...
所有的.Net編譯器在產(chǎn)生模塊(Modules)的目標(biāo)代碼時(shí)都會(huì)產(chǎn)生有關(guān)類(lèi)型的元數(shù)據(jù)(metadata), 這種元數(shù)據(jù)被捆綁在模塊目標(biāo)代碼上(多個(gè)模塊組成assemblies, 一個(gè)assembly是.Net下安全控制的基本單位,也是類(lèi)型對(duì)象識(shí)別的基本單位), 這種元數(shù)據(jù)可以通過(guò).Net環(huán)境下的reflection對(duì)象訪問(wèn). System.Reflection名字空間下包含了可以訪問(wèn)這種數(shù)據(jù)的多種類(lèi).
使用reflection訪問(wèn).Net元數(shù)據(jù)和使用ITypeLib/ITypeInfo訪問(wèn)COM對(duì)象的類(lèi)型庫(kù)數(shù)據(jù)非常類(lèi)似. 例如, 決定類(lèi)型數(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)生類(lèi)型(System.Reflection.Emit.TypeBuilder)