使用反射设置自定义类的属性值
2007-07-25 15:48
477 查看
原因:
今天在工作时遇到这样一个问题,我需要修改一个产品中的某条属性,我以往的做法就是把所有的数据都传递过去管它有没有修改统统重新赋值一边,或者写很多个方法一一修改.
但这次属性如此之多,而且很多时候往往只修改其中一个属性,这个时候我就犯难了.
我想,如果有这样一个方法只需要传入属性的字符串形式,和新值就能够修改这个属性那该多好啊,一是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了一下,得知"反射"这个东东可以,那就试试吧,结果成功了,拿出来分享一下
过程:
首先定义类
/**////自定义类
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 大告成 希望能给大家一点帮助
第一次写技术文章,写的不好还望大家原谅,有什么不对的地方或需要改进的地方请与我联系!
相关文章推荐
- 使用dynamic动态设置属性值与反射设置属性值性能对比
- 使用反射设置对象的字段值
- 反射获取属性值并设置属性值
- 实践:使用资源来设置 Web Server 控件的属性值
- 反射机制中使用JavaBean来模拟Hibernate或Ibatis设置参数
- C# 使用反射设置某个对象的属性或读取某个对象的属性
- Java 用反射设置对象的属性值
- java反射之Field 获取对象属性及设置属性值
- [转] C#反射设置属性值和获取属性值
- Android 在Java代码中设置style属性--使用代码创建ProgressBar对象(反射机制)
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- c# 如何通过反射 获取\设置属性值、
- CSS中定义变量,并使用变量设置属性值
- Java 用反射设置对象的属性值实例详解
- c# 利用反射设置属性值
- Android 应用利用反射机制获取/设置系统属性值
- 反射的使用---访问属性值(*)
- 利用反射 获取android布局文件中设置的属性值
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- c#,利用反射设置属性值