zoukankan      html  css  js  c++  java
  • C#Copy复制对象

    Copy对象

    引用

    using System.Reflection;

            /// <summary>
            /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值
            /// </summary>
            /// <typeparam name="T">泛型</typeparam>
            /// <param name="objOrg">原对象</param>
            /// <returns></returns>
            public static T GetCopy<T>(object objOrg)
            {
                var objOrgType = objOrg.GetType();
                var objOrgProps = objOrgType.GetProperties();
                var objNew = Activator.CreateInstance<T>();
                var objNewType = objNew.GetType();
                var objNewProps = objNewType.GetProperties();
                foreach (PropertyInfo objNewP in objNewProps)
                {
                    var query = objOrgProps.Where(x => x.Name == objNewP.Name);
                    if (query != null)
                    {
                        try
                        {
                            var o = query.First().GetValue(objOrg, null);
                            objNewP.SetValue(objNew, o);//给传入的数据赋值
                        }
                        catch (Exception)
                        {
    
                            // throw;
                        }
                    }
                }
                return (T)objNew;
            }
    
            /// <summary>
            /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <param name="objOrg">原对象</param>
            /// <param name="objOrgPropertyInfo">原对象属性</param>
            /// <param name="objNewPropertyInfo">新对象属性</param>
            /// <returns></returns>
            public static T GetCopy<T>(object objOrg, PropertyInfo[] objOrgPropertyInfo, PropertyInfo[] objNewPropertyInfo)
            {
                var objOrgProps = objOrgPropertyInfo;
                var objNew = Activator.CreateInstance<T>();
                var objNewProps = objNewPropertyInfo;
                foreach (PropertyInfo objNewP in objNewProps)
                {
                    var query = objOrgProps.Where(x => x.Name == objNewP.Name);
                    if (query != null)
                    {
                        try
                        {
                            var o = query.First().GetValue(objOrg, null);
                            objNewP.SetValue(objNew, o);//给传入的数据赋值
                        }
                        catch (Exception)
                        {
    
                            // throw;
                        }
                    }
                }
                return (T)objNew;
            }
    
            /// <summary>
            /// 获取或赋值相同属性的对象,找到T对象属性相同名称的进行赋值
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <typeparam name="T1">原对象类型</typeparam>
            /// <param name="objOrg">原对象集合</param>
            /// <returns></returns>
            public static List<T> GetCopy<T, T1>(List<T1> objOrg)
            {
                var objOrgType = objOrg.GetType();
                var objOrgProps = objOrgType.GetProperties();
                var objNew = Activator.CreateInstance<T>();
                var objNewType = objNew.GetType();
                var objNewProps = objNewType.GetProperties();
                var objNewList = new List<T>();
                foreach (var item in objOrg)
                {
                    var o = GetCopy<T>(item,objOrgProps,objNewProps);
                    objNewList.Add(o);
                }
                return objNewList;
            }
  • 相关阅读:
    java/jsp执行sql语句的方式
    Java 编辑html模板并生成pdf
    Kubernetes的主要功能
    AJPFX浅谈Java性能优化之finalize 函数
    AJPFX浅谈Java 性能优化之垃圾回收(GC)
    AJPFX浅谈Java 性能优化之字符串过滤实战
    AJPFX谈Java 性能优化之基本类型 vs 引用类型
    AJPFX谈JAVA新手问题之异常处理使用不当
    AJPFX浅谈Java新手问题之缺少良好的编程习惯
    AJPFX浅谈关于Java程序员缺乏面向对象的基本功的问题
  • 原文地址:https://www.cnblogs.com/shexunyu/p/14412138.html
Copyright © 2011-2022 走看看