C 反射技術之一讀取和設定類的屬性

2022-03-07 05:13:27 字數 1601 閱讀 4913

要用c#反射技術的話,首先得引入system.reflection 命名空間,這個命名空間裡的類,具有動態引導程式集、型別,動態呼叫方法、設定和取得屬性和字段的值、可以獲取型別和方法的資訊的功能。

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

1class myclass210

set1114}

15}如果有個這個型別的例項:

myclass myobj = new myclass();

我們要動態的為這個例項的屬性

field賦值,那麼得先得到這個例項的型別:

type t 

=typeof

(myclass);

另一種方法是:

type t 

=myobj.gettype();

只要我們得到了物件的型別那麼我們就可以利用反射對這個物件「為所欲為」了,哈哈。

t.getproperty(

"field

").setvalue(myobj,1,

null

);這樣我們就為物件裡的屬性field賦值了。如果把屬性名和要賦的值寫道配置檔案裡的話,我們就可以達到程式執行期間動態的為屬性賦值了。

利用反射獲取屬性值的方法:

intpropvalue 

=convert.toint32(t.getproperty(

"field

").getvalue(myobj,

null

));好了,關於利用反射動態的為物件的屬性賦值取值就到這裡了。

要用c#反射技術的話,首先得引入system.reflection 命名空間,這個命名空間裡的類,具有動態引導程式集、型別,動態呼叫方法、設定和取得屬性和字段的值、可以獲取型別和方法的資訊的功能。

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

1class myclass210

set1114}

15}如果有個這個型別的例項:

myclass myobj = new myclass();

我們要動態的為這個例項的屬性

field賦值,那麼得先得到這個例項的型別:

type t 

=typeof

(myclass);

另一種方法是:

type t 

=myobj.gettype();

只要我們得到了物件的型別那麼我們就可以利用反射對這個物件「為所欲為」了,哈哈。

t.getproperty(

"field

").setvalue(myobj,1,

null

);這樣我們就為物件裡的屬性field賦值了。如果把屬性名和要賦的值寫道配置檔案裡的話,我們就可以達到程式執行期間動態的為屬性賦值了。

利用反射獲取屬性值的方法:

intpropvalue 

=convert.toint32(t.getproperty(

"field

").getvalue(myobj,

null

));好了,關於利用反射動態的為物件的屬性賦值取值就到這裡了。

C 反射技術之一讀取和設定類的屬性

要用c 反射技術的話,首先得引入system.reflection 命名空間,這個命名空間裡的類,具有動態引導程式集 型別,動態呼叫方法 設定和取得屬性和字段的值 可以獲取型別和方法的資訊的功能。要想對乙個型別例項的屬性或字段進行動態賦值或取值,首先得得到這個例項或型別的type,微軟已經為我們提供...

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

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

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

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