zoukankan      html  css  js  c++  java
  • 映射对象

    需要把一个对象映射成另一个对象的时候,这个需要用到反射,一般是数据库中的表的列不够,还需要别的列,这个时候可以把定义一个对象把所有的列都定义了,然后把数据库的表赋值给这个对象,然后再根据需求加上别的列来用。

    https://docs.microsoft.com/en-us/dotnet/api/system.reflection?view=netframework-4.7.2

    方法: 

      /// <summary>
            /// 将一个对象复制给另一个对象
            /// </summary>
            /// <typeparam name="T">返回的对象类型</typeparam>
            /// <typeparam name="X">原始对象类型</typeparam>
            /// <param name="x">原始对象</param>
            /// <returns>返回T类型对象</returns>
            public static T Mapper<T, X>(X x)
            {
                T t = Activator.CreateInstance<T>(); //创建返回的类型
                var typeParent = t.GetType();//获取返回类型 ==typeof(t)
                var typeSub = x.GetType(); //获取原始对象类型
                foreach (PropertyInfo sp in typeSub.GetProperties())//获得类型的属性字段  
                {
                    foreach (PropertyInfo dp in typeParent.GetProperties())
                    {
                        if (dp.Name == sp.Name)//判断属性名是否相同  
                        {
                            dp.SetValue(t, sp.GetValue(x, null), null);//获得原对象属性的值复制给新对象的属性  
                        }
                    }
                }
                return t;
            }
        public class TestOld
        {
            public int ID { get; set; }
    
            public string Name { get; set; }
    
            public int? Age { get; set; }
        }
    
        public class TestNew
        {
            public int ID { get; set; }      
    
            public string Name { get; set; }
    
            public int? Age { get; set; }
    
            public bool? Sex { get; set; }
        }

  • 相关阅读:
    Python_FTP通讯软件
    Python_NAT
    Python_跟随目标主机IP变换
    Python_网络攻击之端口
    spring
    Java多线程总结之线程安全队列Queue
    队列
    路径
    事务的概念
    GBK,UTF-8,和ISO8859-1之间的编码与解码
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10332280.html
Copyright © 2011-2022 走看看