C#反射技术之一动态读取和设置对象的属性值
生活随笔
收集整理的這篇文章主要介紹了
C#反射技术之一动态读取和设置对象的属性值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
要用C#反射技術(shù)的話,首先得引入System.Reflection 命名空間,這個(gè)命名空間里的類,具有動(dòng)態(tài)加載程序集、類型,動(dòng)態(tài)調(diào)用方法、設(shè)置和取得屬性和字段的值、可以獲取類型和方法的信息的功能。要想對(duì)一個(gè)類型實(shí)例的屬性或字段進(jìn)行動(dòng)態(tài)賦值或取值,首先得得到這個(gè)實(shí)例或類型的Type,微軟已經(jīng)為我們提供了足夠多的方法。
<!--
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 } 如果有個(gè)這個(gè)類型的實(shí)例:
MyClass myObj = new MyClass();
我們要?jiǎng)討B(tài)的為這個(gè)實(shí)例的屬性Field賦值,那么得先得到這個(gè)實(shí)例的類型:
<!--
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(); 只要我們得到了對(duì)象的類型那么我們就可以利用反射對(duì)這個(gè)對(duì)象“為所欲為”了。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->t.GetProperty("Field").SetValue(myObj,1,null); 這樣我們就為對(duì)象里的屬性Field賦值了。如果把屬性名和要賦的值寫道配置文件里的話,我們就可以達(dá)到程序運(yùn)行期間動(dòng)態(tài)的為屬性賦值了。
利用反射獲取屬性值的方法:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->int propValue = Convert.ToInt32(t.GetProperty("Field").GetValue(myObj,null));
總結(jié)
以上是生活随笔為你收集整理的C#反射技术之一动态读取和设置对象的属性值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 得到的 飞鸽 传书结果就是int * p
- 下一篇: C#字符串(String)操作