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()方法.
    现在有不少架构直接使用自动代码生成器,也可以不使用反射直接每个属性值进行拷贝亦可。
  • 相关阅读:
    10.16 NOIP模拟赛
    10.14 牛客提高集训营5
    10.12 正睿普及4
    Codeforces Round #516 (Div. 2) (A~E)
    hihoCoder.1509.异或排序(位运算 思路)
    hihoCoder.1513.小Hi的烦恼(bitset 五维偏序)
    hihoCoder挑战赛19 A.Rikka with Sequence(状压DP)
    BZOJ.3668.[NOI2014]起床困难综合症(贪心)
    BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
    BZOJ.3329.Xorequ(数位DP)
  • 原文地址:https://www.cnblogs.com/syveen/p/297176.html
Copyright © 2011-2022 走看看