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();
只要得到了對象的類型,那麼就可以利用反射對這個對象“爲所欲爲”了,哈哈。

利用反射爲對象裏的屬性Field賦值了:
t.GetProperty("Field").SetValue(myObj, value, null);
或者
myObj.GetType().GetProperty("Field").SetValue(myObj, value, null);
或者
myObj.GetType().GetProperty("Field").GetValue(myObj, value, null);
如果把屬性名和要賦的值寫道配置文件裏的話,我們就可以達到程序運行期間動態的爲屬性賦值了。

利用反射獲取對象裏的屬性Field的值的方法:
t.GetProperty("Field").SetValue(myObj,null));
t.GetProperty("Field").GetValue(myObj,null);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章