博客
关于我
强烈建议你试试无所不能的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上dip、dp、px、sp等单位说明(转)
查看>>
32个Chrome 针对网页设计师和开发人员扩展
查看>>
urllib2.urlopen超时问题
查看>>
BAT等互联网公司薪资分享
查看>>
jsp forward 动作标签
查看>>
Hide C# winform App Window When Started by Task Scheduler
查看>>
中颖电子AD操作
查看>>
约瑟夫问题解决
查看>>
Android他们控制的定义(一)
查看>>
STL algorithm算法min,min_element(35)
查看>>
mysql 加入列,改动列,删除列。
查看>>
structs2注解+jsp+ajax实现post异步载入select
查看>>
UC浏览器插件开发
查看>>
结构体数组
查看>>
如何查看maven plugin所包含的goal
查看>>
Python绘图matplotlib
查看>>
寻找子串位置 codevs 1204
查看>>
Flex 学习笔记 XML对象(转)
查看>>
个人简历
查看>>
Django学习笔记1
查看>>