zoukankan      html  css  js  c++  java
  • C# 对象间的 深拷贝 实现

        以下的这个类实现了 2个含有部分字段名字相同 的对象的 赋值拷贝。


    public class ShallowCopyHelper
        {
            public static void CopyPropertiesValue(object objFrom, object objTo)
            {
                if (null == objFrom)
                {
                    return;
                }

                if (null == objTo)
                {
                    return;
                }

                Type typeFrom = objFrom.GetType();
                Type typeTo = objTo.GetType();

                if (objFrom is IList)
                {
                    try
                    {
                        int count = (objFrom as IList).Count;
                        for (int i = 0; i < count; i++)
                        {
                            CopyPropertiesValue((objFrom as IList)[i], (objTo as IList)[i]);
                        }
                    }
                    catch
                    {
                        //
                    }
                }
                else
                {
                    foreach (System.Reflection.PropertyInfo pi in
                        typeFrom.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
                    {
                        try
                        {
                            object valueFrom = typeFrom.GetProperty(pi.Name).GetValue(objFrom, null);
                            object valueTo = typeTo.GetProperty(pi.Name).GetValue(objTo, null);

                            if (typeFrom.GetProperty(pi.Name).PropertyType.IsClass
                                && !typeFrom.GetProperty(pi.Name).PropertyType.IsPrimitive
                                && !(valueFrom is String))
                            {
                                CopyPropertiesValue(valueFrom, valueTo);
                            }
                            else
                            {
                                if (valueFrom == null || !valueFrom.Equals(valueTo))
                                {
                                    //Set value to latest data
                                    typeTo.GetProperty(pi.Name).SetValue(objTo, valueFrom, null);
                                }
                            }
                        }
                        catch
                        {
                            //
                        }

                    }
                }
            }
        }
  • 相关阅读:
    HashMap 的实现原理(1.8)
    HashMap 的实现原理(1.7)
    Java面试总结 -2018(补录)
    在java中写出完美的单例模式
    ArrayList实现原理分析
    Ngigx+Tomcat配置动静分离,负载均衡
    微信小程序——常用快捷键【四】
    Linux服务器下安装vmware虚拟机
    微信小程序——部署云函数【三】
    微信小程序——安装开发工具和环境【二】
  • 原文地址:https://www.cnblogs.com/muzizongheng/p/3169138.html
Copyright © 2011-2022 走看看