程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#反射技術之讀取和設置類的屬性(1)

C#反射技術之讀取和設置類的屬性(1)

編輯:關於C語言

要用C#反射技術的話,首先得引入System.Reflection 命名空間,這個命名空間裡的類,具有動態加載程序集、類型,動態調用方法、設置和取得屬性和字段的值、可以獲取類型和方法的信息的功能。

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

1 Class MyClass
2 {
3 private int fIEld;
4 public int FIEld
5 {
6 get
7 {
8 return this.fIEld;
9 }
10 set
11 {
12 this.fIEld = value;
13 }
14 }
15 }

如果有個這個類型的實例:

MyClass myObj = new MyClass();

我們要動態的為這個實例的屬性FIEld賦值,那麼得先得到這個實例的類型:

Type t=typeof(MyClass);另一種方法是:

Type t=myObj.GetType();只要我們得到了對象的類型那麼我們就可以利用反射對這個對象“為所欲為”了,哈哈。

t.GetProperty("Field").SetValue(myObj,1,null);這樣我們就為對象裡的屬性FIEld賦值了。如果把屬性名和要賦的值寫道配置文件裡的話,我們就可以達到程序運行期間動態的為屬性賦值了。

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

int propValue=Convert.ToInt32(t.GetProperty("FIEld").SetValue(myObj,null));好了,關於利用反射動態的為對象的屬性賦值取值就到這裡了。

(C#)利用反射動態調用類成員

使用反射動態調用類成員,需要Type類的一個方法:InvokeMember。對該方法的聲明如下:

public object InvokeMember(
 string name,
 BindingFlags invokeAttr,
 Binder binder,
 object target,
 object[] args
);

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