博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
并发编程之队列
查看>>
Android上解析Json格式数据
查看>>
mysql的相关命令整理
查看>>
hdu5909 Tree Cutting 【树形dp + FWT】
查看>>
欧拉项目第四题之三位数之积数的最大回数
查看>>
Codeforces Round #482 (Div. 2) B、Treasure Hunt(模拟+贪心)979B
查看>>
overflow :scroll在IOS上很卡的解决方案
查看>>
Oracle EBS INV 释放保留
查看>>
java 中函数的参数传递详细介绍
查看>>
本人的cocos2d-x之路
查看>>
HTTP报文
查看>>
MySQL教程及经常使用命令1.1
查看>>
jQuery Ajax: $.post请求示例
查看>>
Java - 面向对象(object oriented)计划 详细解释
查看>>
尝到awk
查看>>
poj 1556 zoj1721 BellmanFord 最短路+推断直线相交
查看>>
linux awk命令详细使用方法
查看>>
C#异步调用
查看>>
古训《增广贤文》
查看>>
Safety Interval Upper/Lower Limit of a Delta Selection(2)
查看>>