c#反射應用


接上篇更新:

1.什么是反射

反射:Reflection,System.Reflection命名空間,是微軟提供的幫助類庫

反射加載dll,讀取程序集(Assembly),模塊(Module),類(Class),方法(Method)

Dll包括:IL和metada

IL:中間語言,標准的面向對象語言,但是不太好閱讀

Medata:元數據,數據清單,只是描述了類中有什么

反射破壞單例其實就是反射可以調用私有構造函數

 

2.反射的優缺點

  優點:1.降低耦合性,提高自適應能力。[減少對象與對象之間的依賴,只需要知道類名(字符串),方法名(字符串),就可以調用]

        2.允許程序創建和控制任何類的對象,無需提前硬編碼目標類[可以突破特定權限,可以做到普通方式無法做到的比如可以通過反射調用私有方法]

缺點:1.編寫比較困難,代碼量大,編寫的時候容易出錯

     2. 性能問題,性能損耗大,經過測試:發現反射確實性能損耗比較大 普通方式:60, 反射:5470,確實讓我們無法接受,經過緩存優化之后發現,普通方式:42反射:80,對於性能損耗,大家要理性看待,因為執行的數量巨大,中間的這些性能損耗是可以忽略不計。

 

 

 

 

 

 

 

 

反射的使用

 

 

 

使用LoadFile加載程序集

使用LoadFrom加載程序集

 

使用反射獲取類型,創建對象

 

 使用反射+簡單工廠+配置文件獲取類型,創建對象

 

 

 

 

 

 

反射選擇不同構造函數創建對象

 

 

 

 反射調用方法

反射調用普通方法

 

 

 

 反射調用有參數方法

 

 

 反射調用重載方法

 

 

 

 反射調用私有方法

 

 

 

 反射調用靜態方法

 

 

 

 

 反射調用泛型方法,泛型類

反射在普通類中調用泛型方法:

 

 

反射在泛型類中調用泛型方法:

 

 

 

 

另外一種:

 

 

 

 

 

反射操作類內屬性

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM