程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [源碼]Literacy 快速反射讀寫對象屬性,字段

[源碼]Literacy 快速反射讀寫對象屬性,字段

編輯:C#入門知識

  Literacy 說明

Literacy使用IL指令生成方法委托,性能方面,在調用次數達到一定量的時候比反射高很多

當然,用IL指令生成一個方法也是有時間消耗的,所以在的情況,不但不能提高性能,反而會使性能下降,所以使用場合需要自己把握

下面是在我的電腦上做的一些測試(因機器配置不同會有少許誤差)

關於IL指令生成方法可以參考

玩轉動態編譯 - 高級篇:一,IL訪問靜態屬性和字段

玩轉動態編譯 - 高級篇:二,IL設置靜態屬性,字段和類型轉換

玩轉動態編譯 - 高級篇:三,實例屬性的讀取與設置

  Literacy 常用屬性方法

 

 Literacy(Type type)  構造函數,加載所有公開屬性  Literacy(Type type, bool ignoreCase)

 構造函數,加載所有公開屬性

 ignoreCase 指示屬性名是否區分大小寫

 NewObject()

 調用對象的無參構造函數,新建對象

 CreateNewObject(Type type, Type[] argTypes = null)  IL構造一個用於調用對象指定構造函數的委托  CreateGetter(PropertyInfo prop)  IL構造一個用於獲取對象屬性值的委托  CreateGetter(FieldInfo field)  IL構造一個用於獲取對象字段值的委托  CreateSetter(PropertyInfo prop)  IL構造一個用於設置對象屬性值的委托  CreateSetter(FieldInfo field)  IL構造一個用於設置對象字段值的委托    Load.PublicField()  加載公開的實例字段  Load.NonPublicField()  加載非公開的實例字段  Load.StaticField(bool hasNonPublic)  加載公開靜態的字段
 參數hasNonPublic指示是否同時加載非公開的靜態字段  Load.NonPublicProperty()  加載非公開的實例屬性  Load.StaticProperty(bool hasNonPublic)  加載公開靜態的屬性
 參數hasNonPublic指示是否同時加載非公開的靜態屬性  Property[string name]  獲取指定屬性的ObjectProperty對象  Property[string name].GetValue(obj instance)  獲取實例對象的指定屬性的值  Property[string name].TryGetValue(object instance, out object value)  嘗試獲取實例對象的指定屬性的值,失敗返回false  Property[string name].SetValue(object instance, object value)  設置實例對象的指定屬性的值  Property[string name].TrySetValue(object instance, object value)  嘗試設置實例對象的指定屬性的值,失敗返回false  Field[string name]  獲取指定字段的ObjectProperty對象  Field[string name].GetValue(obj instance)  獲取實例對象的指定字段的值  Field[string name].TryGetValue(object instance, out object value)  嘗試獲取實例對象的指定字段的值,失敗返回false  Field[string name].SetValue(object instance, object value)  設置實例對象的指定字段的值  Field[string name].TrySetValue(object instance, object value)  嘗試設置實例對象的指定字段的值,失敗返回false

  Literacy調用實例

 

  Literacy源碼下載

源碼下載

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved