对泛型T的属性操作

本文介绍了一个通用的属性辅助器类PropertyHelper,该类能够简化.NET中对象属性的读写操作。通过使用反射机制,此类允许以类似字典的方式访问对象的属性,支持静态和实例成员。示例展示了如何创建此类的实例并获取对象属性。
摘要由CSDN通过智能技术生成

 

ExpandedBlockStart.gif 代码
  public   class  PropertyHelper < T >  
   {      
      
private  T entiy;      

      
public  PropertyHelper(T t)       

    {  entiy 
=  t;            

    BindingAttr 
=  BindingFlags.Public  |  BindingFlags.Static  |  BindingFlags.Instance;      

    }      

  
public  BindingFlags BindingAttr {  get set ; }      
  
public  T Entiy  {  get  {  return  entiy; } }   

  
public   object   this [ string  name] {  get {   return   this [name,  null ];  }  set  {  this [name, null =  value; }}       
 
public   object   this [ string  name, object [] index] {  get  {   if  (name  ==   null throw   new  ArgumentNullException( " name " );   object  obj  =   null
try   {  
       PropertyInfo info 
=  entiy.GetType().GetProperty(name, BindingAttr);  
       obj 
=  info.GetValue(entiy, index);  }  
catch  (Exception e)  
throw   new  Exception(e.Message);   }  
  
return  obj;  } 
set   {   if  (name  ==   null )   throw   new  ArgumentNullException( " name " ); 
       
try    { PropertyInfo info  =  entiy.GetType().GetProperty(name, BindingAttr);
       info.SetValue(entiy,value,index); 
     }  
     
catch  (Exception e)  
     { 
       
throw   new  Exception(e.Message); 
      } 
    } 
   } 
 }

 

 

 

 

PropertyHelper<BomG> bh = new PropertyHelper<BomG>(bomg);

string name = bh["Name"] as string;

2.string dec = "qazxswedc";

ProPertyHelper<string> dechelper = new PropertyHelper<string>(dec);

int leng = (int)dechelper["Length"] ;

转载于:https://www.cnblogs.com/johnwonder/archive/2010/02/08/1665830.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值