好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

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

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

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

?

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

其他可以忽略。。

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

原文链接:http://HdhCmsTestcftea测试数据/c/2012/10/5657.asp

dy("nrwz");

查看更多关于C#通过属性名称获取(读取)属性值的方法的详细内容...

  阅读:49次