欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-02 22:03:14
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟...

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

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

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

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

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

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);

其他可以忽略。。

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