C#通过属性名称获取(读取)属性值的方法
2013-09-09 23:03
686 查看
C#通过属性名称获取(读取)属性值的方法
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊!然后今天我再上网找了找,被我找到了,跟大家分享一下。
其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~
不得不说反射是一种很强大的技术。。
下面给代码,希望能帮到有需要的人。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace PropertyNameGetPropertyValueDemo 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Person ps = new Person(); 13 ps.Name = "CTZ"; 14 ps.Age = 21; 15 16 Demo dm = new Demo(); 17 dm.Str = "String"; 18 dm.I = 1; 19 20 Console.WriteLine(ps.GetValue("Name")); 21 Console.WriteLine(ps.GetValue("Age")); 22 Console.WriteLine(dm.GetValue("Str")); 23 Console.WriteLine(dm.GetValue("I")); 24 } 25 } 26 27 abstract class AbstractGetValue 28 { 29 public object GetValue(string propertyName) 30 { 31 return this.GetType().GetProperty(propertyName).GetValue(this, null); 32 } 33 } 34 35 class Person : AbstractGetValue 36 { 37 public string Name 38 { get; set; } 39 40 public int Age 41 { get; set; } 42 } 43 44 class Demo : AbstractGetValue 45 { 46 public string Str 47 { get; set; } 48 49 public int I 50 { get; set; } 51 } 52 }
如果觉得上面比较复杂了,可以看下面的简化版。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace GetValue 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Person ps = new Person(); 13 ps.Name = "CTZ"; 14 ps.Age = 21; 15 16 Console.WriteLine(ps.GetValue("Name")); 17 Console.WriteLine(ps.GetValue("Age")); 18 } 19 } 20 21 class Person 22 { 23 public string Name 24 { get; set; } 25 26 public int Age 27 { get; set; } 28 29 public object GetValue(string propertyName) 30 { 31 return this.GetType().GetProperty(propertyName).GetValue(this, null); 32 } 33 } 34 }
实质语句只有一句:
this.GetType().GetProperty(propertyName).GetValue(this, null);
其他可以忽略。。
http://www.cftea.com/c/2012/10/5657.asp(原文出处,免得变成盗用了)
相关文章推荐
- C#通过属性名称获取(读取)属性值的方法
- C#通过属性名称获取(读取)属性值的方法 z
- C#通过属性名称获取(读取)属性值的方法
- C# 通过属性名称获取(读取)Json对象属性值的方法
- C#实现获取不同对象中名称相同属性的方法
- C#中通过反射方法获取控件类型和名称
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C#通过Expression获取指定属性的名称
- 【转】C#通过Expression获取指定属性的名称
- 如何通过样式来处理根据自身其他属性内容赋值其他属性值的方法研究
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- 通过反射机制获取某个类的所有属性,打印属性值,并思考以下问题:可以更改属性值吗?
- 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎
- android 通过uri获取图片并根据限制大小读取图片的方法
- c# 如何通过反射 获取属性值
- Div使用name属性实现通过getElementsByName获取Div集的方法
- 6.通过反射动态创建对象,获取属性,获取方法
- python通过ElementTree操作XML获取结点读取属性美化XML
- C#反射设置属性值和获取属性值
- 通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法