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

你可能感兴趣的文章
忘记root密码,怎么办
查看>>
linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
查看>>
《黑客与画家》 读书笔记
查看>>
bzoj4407: 于神之怒加强版
查看>>
mysql统计一张表中条目个数的方法
查看>>
ArcGIS多面体(multipatch)解析——引
查看>>
css3渐变画斜线 demo
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>