原因:
今天在工作时遇到这样一个问题,我需要修改一个产品中的某条属性,我以往的做法就是把所有的数据都传递过去管它有没有修改统统重新赋值一边,或者写很多个方法一一修改.
但这次属性如此之多,而且很多时候往往只修改其中一个属性,这个时候我就犯难了.
我想,如果有这样一个方法只需要传入属性的字符串形式,和新值就能够修改这个属性那该多好啊,一是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 大告成 希望能给大家一点帮助
第一次写技术文章,写的不好还望大家原谅,有什么不对的地方或需要改进的地方请与我联系!
使用反射轻松修改自定义类属性
工作中遇到需要修改大量属性的问题,通过Google发现反射可以解决。本文介绍如何利用反射根据属性名字符串来设定类的属性值,提供了一个简单易用的方法,并分享了实现过程。
891

被折叠的 条评论
为什么被折叠?



