真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#提高知識-001:反射的應(yīng)用和原理(一)

在項(xiàng)目中,程序集間的相互引用是經(jīng)常遇到的。比如,主程序引用各分模塊,各分模塊引用公用程序集,以及平行的程序集間為了某些功能的實(shí)現(xiàn)也需要相互引用。這樣的引用一方面是迫不得已的選擇,而另一方面也反映出系統(tǒng)設(shè)計(jì)的水平。下面,簡單介紹一下C#中的一種機(jī)制——反射。反射可以在避免某些情況下的程序集引用問題,比如主程序引用各功能模塊的問題,當(dāng)然其它模塊間也是可以用反射的,只是使用是否方便這些問題需要在使用前根據(jù)實(shí)際情況進(jìn)行考慮。本文以主程序加載分模塊為例,介紹一下反射的使用。
所謂反射,就是對程序集或模塊利用基礎(chǔ)類型進(jìn)行解析,然后還原出一個對象模型,在調(diào)用者工作域里運(yùn)行的一個過程。其核心部分就是解析。工作原理是這樣的。
無論你創(chuàng)建的多么結(jié)構(gòu)復(fù)雜的類,歸根結(jié)底都是由元數(shù)據(jù)構(gòu)成的。如下,

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)10多年經(jīng)驗(yàn)成就非凡,專業(yè)從事成都做網(wǎng)站、網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文推廣廣告投放平臺等。10多年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:028-86922220,我們期待您的來電!

public class Person
 {
     private string name;
     private int  age;
     private string content;
 }

在程序編譯時,編譯器會創(chuàng)建類型表,字段表,方法表或其它表。再利用System.Reflection命名空間中的包含的類型進(jìn)行解析,也可以看成對比的過程,將要被反射的程序集中的表讀出,根據(jù)System.Reflection的基本類型,進(jìn)行重組,從而還原出原來程序集的結(jié)構(gòu)。
例如,序列化的過程就是使用了反射,序列化格式器將被序列化的對象中的字段的值獲取出來,然后寫入一個字節(jié)流,進(jìn)行傳輸;因?yàn)樽止?jié)流傳輸不容易出錯或信息丟失。接收到字節(jié)流后,根據(jù)基本類型再還原出原對象的模型。
反射中,System.Type類型很重要,它遍歷被反射的表中的類型和反射中的基本類型進(jìn)行比較,然后判斷出當(dāng)前是什么類型。
簡單了解了原理,那么再看如何使用的。
建一個工程,包含主程序和子程序集,如圖

C#提高知識-001:反射的應(yīng)用和原理(一)

那么反射我們就有了一個直觀的理解,里面的詳細(xì)原理,下一篇繼續(xù)介紹

代碼下載


文章名稱:C#提高知識-001:反射的應(yīng)用和原理(一)
網(wǎng)頁路徑:http://weahome.cn/article/psejed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部