使用反射设置自定义类的属性值

工作中遇到需要修改大量属性的问题,通过Google发现反射可以解决。本文介绍如何利用反射根据属性名字符串来设定类的属性值,提供了一个简单易用的方法,并分享了实现过程。
摘要由CSDN通过智能技术生成

原因:
    今天在工作时遇到这样一个问题,我需要修改一个产品中的某条属性,我以往的做法就是把所有的数据都传递过去管它有没有修改统统重新赋值一边,或者写很多个方法一一修改.
    但这次属性如此之多,而且很多时候往往只修改其中一个属性,这个时候我就犯难了.
    我想,如果有这样一个方法只需要传入属性的字符串形式,和新值就能够修改这个属性那该多好啊,一是google了一下,得知"反射"这个东东可以,那就试试吧,结果成功了,拿出来分享一下

过程:
    首先定义类

///自定义类
public   class  ComProduct
    
{
        
private int _ProductID;
        
private string _ProductName;
 
        
public ComProduct()
        
{ }

        
public int ProductID
        
{
            
get return _ProductID; }
            
set { _ProductID = value; }
        }


        
public string ProductName
        
{
            
get return _ProductName; }
            
set { _ProductName = value; }
        }

    }


写一个修改属性的方法

///修改属性
public   static   void  ModifyObjProperty( string  PropertyName, object  newValue, ref  ComProduct comPro)
        
{
            Type t 
= typeof(ComProduct);
            PropertyInfo propertyInfo1 
= t.GetProperty(PropertyName);
            propertyInfo1.SetValue(comPro, newValue, 
null);
        }


///然后调用
ComProduct comproduct = new  ComProduct();
ModifyObjProperty(
" ProductName " ,( object ) " NewName " , ref  comproduct)
ModifyObjProperty(
" ProductID " ,( object ) 1 , ref  comproduct)

///输出
Response.Write(comproduct.ProductID + " <br> " + comproduct.ProductName);

 


OK 大告成 希望能给大家一点帮助
第一次写技术文章,写的不好还望大家原谅,有什么不对的地方或需要改进的地方请与我联系!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值