zoukankan      html  css  js  c++  java
  • 一个简单的反射拷贝一份新的实体类

    有时候我们需要复制一个实体类,而又不希望两个使用同一个内存地址,我用了很简单的反射来实现这种功能:)

    /// <summary>
            
    /// 设置实体对象的修改属性
            
    /// </summary>
            
    /// <param name="obj"></param>
            
    /// <returns></returns>

            public void CloneEntityObject(object srcObj, object desObj)
            
    {
                
    if (srcObj.Equals(desObj))
                
    {
                    
    return;
                }

                
    if (srcObj.GetType() != desObj.GetType())
                
    {
                    
    return;
                }

                System.Reflection.PropertyInfo[] info 
    = srcObj.GetType().GetProperties();
                
    foreach (System.Reflection.PropertyInfo property in info)
                
    {
                    desObj.GetType().GetProperty(property.Name).SetValue(desObj,
                        srcObj.GetType().GetProperty(property.Name).GetValue(srcObj, 
    null), null);
                }

            }


    也可以将实体类直接继承ICloneable接口,并用如上方法来实现Clone()方法.
    现在有不少架构直接使用自动代码生成器,也可以不使用反射直接每个属性值进行拷贝亦可。
  • 相关阅读:
    poj 2243 bfs 利用 结构体中的step成员保存步数 ,STL的队列
    poj 1915 双向 BFS 利用数组 a[x][y] = a[cp.x][cp.y] + 1; b[x][y] = b[cp.x][cp.y] + 1;保留步数
    poj 1915 BFS 利用 pre 计算步数------------------路径
    hdu 1242
    poj 2243
    rwkj 1502
    png-CRC32校验
    uva-331-枚举-交换的方案数
    uva-301-枚举-组合
    关于docker
  • 原文地址:https://www.cnblogs.com/syveen/p/297176.html
Copyright © 2011-2022 走看看