C 反射技術的簡單操作 讀取和設定類的屬性

2021-09-06 10:11:33 字數 1380 閱讀 4305

public

class

a

}static

void

main()

少量屬性的自動化操作手動新增幾下當然是沒有問題的,但是屬性數量較多的時候敲起這些繁鎖的**可以困了,再說對擴充套件和維護性造成很多的不便,這時,就需要使用反射來實現了。

要想對乙個型別例項的屬性或字段進行動態賦值或取值,首先得得到這個例項或型別的type,微軟已經為我們提供了足夠多的方法。

首先建立乙個測試的類

public

class myclass 

public

int two  

public

int five  

public

int three  

public

int four  

然後編寫反射該類的**

myclass obj = new myclass(); 

type t = typeof(myclass); 

//迴圈賦值 

int i = 0; 

foreach (var item in t.getproperties()) 

//單獨賦值 

t.getproperty("five").setvalue(obj, 11111111, null); 

//迴圈獲取 

stringbuilder sb = new stringbuilder(); 

foreach (var item in t.getproperties()) 

//單獨取值 

int five = convert.toint32(t.getproperty("five").getvalue(obj, null)); 

string result = sb.tostring(); 

response.write(result); 

測試顯示結果: 

型別:system.int32 屬性名:one 值:0 

型別:system.int32 屬性名:two 值:1 

型別:system.int32 屬性名:five 值:11111111 

型別:system.int32 屬性名:three 值:3 

型別:system.int32 屬性名:four 值:4 

單獨取five的值:11111111

了解了類的屬性反射使用後,那麼方法也是可以這樣做的,即t.getproperties()改為t.getmethods(),操作方法同上。

注:以上**中如不能直接使用請新增using system.text;的引用。

C 反射技術的簡單操作 讀取和設定類的屬性

要想對乙個型別例項的屬性或字段進行動態賦值或取值,首先得得到這個例項或型別的type,微軟已經為我們提供了足夠多的方法。首先建立乙個測試的類 複製 如下 public class myclass public int two public int five public int three publ...

C 反射技術的簡單操作,讀取和設定類的屬性

反射的作用想必大家都知道了吧,少量屬性的自動化操作手動新增幾下當然是沒有問題的,但是屬性數量較多的時候敲起這些繁鎖的 可以困了,再說對擴充套件和維護性造成很多的不遍,以下 中如不能直接使用請新增using system.text 的引用。要想對乙個型別例項的屬性或字段進行動態賦值或取值,首先得得到這...

C 反射技術的簡單操作 讀取和設定類的屬性

反射的作用想必大家都知道了吧,少量屬性的自動化操作手動新增幾下當然是沒有問題的,但是屬性數量較多的時候敲起這些繁鎖的 可以困了,再說對擴充套件和維護性造成很多的不遍,以下 中如不能直接使用請新增using system.text 的引用。要想對乙個型別例項的屬性或字段進行動態賦值或取值,首先得得到這...