C#反射技术之一动态读取和设置对象的属性值
生活随笔
收集整理的這篇文章主要介紹了
C#反射技术之一动态读取和设置对象的属性值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
要用C#反射技術的話,首先得引入System.Reflection 命名空間,這個命名空間里的類,具有動態加載程序集、類型,動態調用方法、設置和取得屬性和字段的值、可以獲取類型和方法的信息的功能。要想對一個類型實例的屬性或字段進行動態賦值或取值,首先得得到這個實例或類型的Type,微軟已經為我們提供了足夠多的方法。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->1 Class MyClass
2 {
3 privateint field;
4 publicint Field
5 {
6 get
7 {
8 returnthis.field;
9 }
10 set
11 {
12 this.field= value;
13 }
14 }
15 } 如果有個這個類型的實例:
MyClass myObj = new MyClass();
我們要動態的為這個實例的屬性Field賦值,那么得先得到這個實例的類型:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->Type t =typeof(MyClass); 另一種方法是:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->Type t = myObj.GetType(); 只要我們得到了對象的類型那么我們就可以利用反射對這個對象“為所欲為”了。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->t.GetProperty("Field").SetValue(myObj,1,null); 這樣我們就為對象里的屬性Field賦值了。如果把屬性名和要賦的值寫道配置文件里的話,我們就可以達到程序運行期間動態的為屬性賦值了。
利用反射獲取屬性值的方法:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->int propValue = Convert.ToInt32(t.GetProperty("Field").GetValue(myObj,null));
總結
以上是生活随笔為你收集整理的C#反射技术之一动态读取和设置对象的属性值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 得到的 飞鸽 传书结果就是int * p
- 下一篇: 今天的成功的滋味 企业即时通讯