.NET 反射概述
反射提供了封裝程序集、模塊和類型的對象(Type 類型)。可以使用反射動態創建類型的實例,將類型綁定到現有對象,或從現有對象獲取類型并調用其方法或訪問其字段和屬性。如果代碼中使用了屬性,可以利用反射對它們進行訪問。
反射
反射提供了封裝程序集、模塊和類型的對象(Type 類型)。可以使用反射動態創建類型的實例,將類型綁定到現有對象,或從現有對象獲取類型并調用其方法或訪問其字段和屬性。如果代碼中使用了屬性,可以利用反射對它們進行訪問。
獲取變量類型
- int i = 42;
- System.Type type = i.GetType();
加載程序集
- System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
適用場景
- 需要訪問程序元數據的屬性
- 檢查和實例化程序集中的類型
- 在運行時構建新類型,使用 System.Reflection.Emit 中的類
- 執行后期綁定,訪問在運行時創建的類型的方法
性能影響
反射的性能損失主要來源于比較類型、遍歷成員、調用成員三種情形,其中比較類型耗時最小,調用成員耗時最多,所以盡量減少采用成員動態調用等反射方式可以提高應用程序性能。除此之外,采取后期綁定、避免將反射方法放到循環內產生放大效應等辦法均可提升反射性能。
責任編輯:陳四芳
來源:
M守護神