博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的反射拷贝一份新的实体类
阅读量:5329 次
发布时间:2019-06-14

本文共 737 字,大约阅读时间需要 2 分钟。

有时候我们需要复制一个实体类,而又不希望两个使用同一个内存地址,我用了很简单的反射来实现这种功能:)
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/// <summary>
InBlock.gif        
/// 设置实体对象的修改属性
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="obj"></param>
ExpandedBlockEnd.gif        
/// <returns></returns>
None.gif
        
public
 
void
 CloneEntityObject(
object
 srcObj, 
object
 desObj)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif
{
InBlock.gif            
if (srcObj.Equals(desObj))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return;
ExpandedSubBlockEnd.gif            }
InBlock.gif            
if (srcObj.GetType() != desObj.GetType())
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return;
ExpandedSubBlockEnd.gif            }
InBlock.gif            System.Reflection.PropertyInfo[] info 
= srcObj.GetType().GetProperties();
InBlock.gif            
foreach (System.Reflection.PropertyInfo property in info)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                desObj.GetType().GetProperty(property.Name).SetValue(desObj,
InBlock.gif                    srcObj.GetType().GetProperty(property.Name).GetValue(srcObj, 
null), null);
ExpandedSubBlockEnd.gif            }
ExpandedBlockEnd.gif        }
None.gif
也可以将实体类直接继承ICloneable接口,并用如上方法来实现Clone()方法.
现在有不少架构直接使用自动代码生成器,也可以不使用反射直接每个属性值进行拷贝亦可。

转载于:https://www.cnblogs.com/syveen/archive/2005/12/14/297176.html

你可能感兴趣的文章
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>
git安装和简单配置
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
Linux设置环境变量的方法
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>