当前位置: 移动技术网 > IT编程>开发语言>c# > C#通过属性名称获取(读取)属性值的方法

C#通过属性名称获取(读取)属性值的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊!

然后今天我再上网找了找,被我找到了,跟大家分享一下。

其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~

不得不说反射是一种很强大的技术。。

下面给代码,希望能帮到有需要的人。

using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace propertynamegetpropertyvaluedemo
{
 class program
 {
  static void main(string[] args)
  {
   person ps = new person();
   ps.name = "ctz";
   ps.age = 21;
   demo dm = new demo();
   dm.str = "string";
   dm.i = 1;
   console.writeline(ps.getvalue("name"));
   console.writeline(ps.getvalue("age"));
   console.writeline(dm.getvalue("str"));
   console.writeline(dm.getvalue("i"));
  }
 }
 abstract class abstractgetvalue
 {
  public object getvalue(string propertyname)
  {
   return this.gettype().getproperty(propertyname).getvalue(this, null);
  }
 }
 class person : abstractgetvalue 
 {
  public string name
  { get; set; }

  public int age
  { get; set; }
 }
 class demo : abstractgetvalue
 {
  public string str
  { get; set; }
  public int i
  { get; set; }
 }
}

如果觉得上面比较复杂了,可以看下面的简化版。

using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace getvalue
{
 class program
 {
  static void main(string[] args)
  {
   person ps = new person();
   ps.name = "ctz";
   ps.age = 21;

   console.writeline(ps.getvalue("name"));
   console.writeline(ps.getvalue("age"));
  }
 }
 class person
 {
  public string name
  { get; set; }

  public int age
  { get; set; }
  public object getvalue(string propertyname)
  {
   return this.gettype().getproperty(propertyname).getvalue(this, null);
  }
 }
}

实质语句只有一句:

this.gettype().getproperty(propertyname).getvalue(this, null);

其他可以忽略。。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持移动技术网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网