首页 >> .NET Framework >> 正文
运用反射给实体赋值-.NET Framework
来源:Dotnet频道 作者:采集 时间:2008-4-1

在系统开发过程中,有一些代码是必须反复 写的.比如实体的赋值过程(不用实体的免看).

Eg: XXX.xxx=XXX

虽然可以通过codesmith来生成赋值,但是免不了代码冗长.如果是根据数据库生成的话,我们还要删除非必要的属性.而且过分依赖数据库.

特别是当你需要不同实体之间进行相同属性拷贝时,你必须一个属性一个属性赋值.实在太烦了.

我在做个java项目时无意发现了一个PropertyUtils类.就是用来属性复制的类,探究原理之后.发现其实.net里也是同样可以实现的.

.net的反射就是实现的办法. using System.Reflection;

  /// <summary>
  /// 对象属性拷贝(全匹配拷贝)
  /// </summary>
  /// <param name="obj1">源对象</param>
  /// <param name="obj2">目标对象</param>
  /// <returns>目标对象</returns>
  public static object PropertyCopy(object obj1,object obj2)
  {
   Type souType=obj1.GetType();
   Type tarType = obj2.GetType();
   PropertyInfo[] pis=souType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
   if(null!=pis)
   {
    foreach(PropertyInfo pi in pis)
    {
     string propertyName=pi.Name;
     PropertyInfo pit=tarType.GetProperty(propertyName);
     if(pit !=null)
     {
      pit.SetValue(obj2,pi.GetValue(obj1,null),null);
     }
    }
   }
   return obj2;

  }

实际上可以只传两个Type进来也可以的.

但是这个有个问题,就是当两个实体的同名属性类型不匹配时,会抛意外.我这个只是个例子,没有try出来.

基本原理就是这样子.呵呵.我的代码风格一般,估计看坏大家的眼睛了.

我自己做了个类似Nhibernate的数据绑定(暂时支持单表),完善ing.呵呵有空再切磋咯

如果有什么问题,欢迎大家指正

相关新闻
相关评论
 
评论表单加载中...
 
.NET Framework文章

 在Visual C++应

 编辑:admin

 时间:2008-3-10


   .NET Framework 中多语言支持的实现-.NET Framework
   将Eiffel系统集成到.NET Framework中-.NET Framework
   04年五种常用RAD的测验比较(1)-.NET Framework
   04年五种常用RAD的测验比较(2)-.NET Framework
   04年五种常用RAD的测验比较(3)-.NET Framework
最新文章
   .NET Framework 中多语言支持的实现-.NET Framework
   将Eiffel系统集成到.NET Framework中-.NET Framework
   04年五种常用RAD的测验比较(1)-.NET Framework
   04年五种常用RAD的测验比较(2)-.NET Framework
   04年五种常用RAD的测验比较(3)-.NET Framework
总站搜索
搜索
 
热门文章
   oracle数据库文件中的导入\导出
   用Oracle10g列值掩码技术隐藏敏感数据
   VB程序中用ADO对象动态创建数据库和表-VB.NET
   用VB6写简单程序 让电骡自动关机-VB.NET
   使用.NET2.0编写COM组件供VB调用-VB.NET
   VB.NET:键盘控制焦点移动-VB.NET
   用VB.NET绘制GDI图形-VB.NET
   vb.net中应用 ArrayList 实例-VB.NET
 
推荐文章
ASP.NET中的状态管理-ASP.NET
VC、IE、ASP环境下打印、预备的完美解决方案
oracle数据库文件中的导入\导出
VB.NET中快速访问注册表技巧-VB.NET
在vb中实现超连接的方法!和直接发邮件-VB.NET
用VB做realplayer播放列表-VB.NET
在VB.NET中如何实现和利用SortedLists-VB.NET
利用VB.NET Stopwatch对象记录时间-VB.NET
成都古羌科技有限公司版权所有: Copyright@2007-2010 ,ALL Rights Reserved 蜀ICP备07017240号