C# 同类型实体赋值

        #region 更新赋值,前者赋值给后者
        public static void ShadowCopy(object a, object b)
        {
            if (a == null) return;

            if (a.GetType() == b.GetType())
            {
                PropertyInfo[] properties = a.GetType().GetProperties();

                foreach (var p in properties)
                {
                    var value = p.GetValue(a, null);
                    if (value != GetDefault(p.GetType()))
                        p.SetValue(b, value, null);
                }
            }
        }

        public static object GetDefault(Type type)
        {
            if (type.IsValueType)
            {
                return Activator.CreateInstance(type);
            }
            return null;
        }

        #endregion
时间: 2024-12-16 21:00:57

C# 同类型实体赋值的相关文章

c语言中long long类型的赋值

long long unsigned int num = 20140701092715; 在C语言中编译器会把没有小数的数值常量默认为整形,这条语句编译器会报警告: [[email protected] ~]# gcc -o test 1.c 1.c: In function ‘main’: 1.c:6: warning: integer constant is too large for ‘long’ type 为了标识是long long类型,处理方法:将20140701092715指定为l

应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)

本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读我或其它博主提供的示例代码时,会发现几种类型的实体,这几种实体初步看上去区别不大,只是名称不同,特别在这些示例非常简单的情况下更是如此.你可能会疑惑为何要搞得这么复杂,采用一种实体不是更好? 在最理想的情况下,我们只想采用领域实体Entity进行所有的操作. 领域实体是领域层的核心,是业务逻辑的主要

python基础(7):元祖类型(赋值补充)

前面学了列表和字典,今天我们看一个和列表相似的类型元祖. 预习: 简单购物车 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入 msg_dic={'apple':10,'tesla':100000,'mac':3000,'lenovo':30000,'chicken':10,} 一.元组(tuple) 为何要有元组?===>存多个值,对比列表来说,元组不可变,主要是用来读 定义:与列表类型相似,只不过[]换成()

Go语言学习笔记1 变量,类型以及赋值

1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int类型的零值,0:如果i是bool类型,则为false:i是float64类型,则为0.0:i为string类型,则为"":i为interface类型,则为nil:i为引用类型,则为nil:如果i是struct,则是将struct中所有的字段初始化为对应类型的零值. 可以在同一条语句中声明多

Java对象的浅拷贝和深拷贝&&String类型的赋值

Java中的数据类型分为基本数据类型和引用数据类型.对于这两种数据类型,在进行赋值操作.方法传参或返回值时,会有值传递和引用(地址)传递的差别. 浅拷贝(Shallow Copy): ①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象.因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得到的数据. ②对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组.某个类的对象等,那么浅拷贝会进行引用传递,也就是只

6 元组和集合类型(赋值补充)

元组(tuple) 为何要有元组?===>存多个值,对比列表来说,元组不可变,主要是用来读 定义:与列表类型相似,只不过[]换成(),元组是不可变类型所以可以当做字典的key 常用方法: 1 #!/usr/bin/env python3 2 # _*_ coding:utf-8 _*_ 3 # @Time : 2017/08/31 4 # @Author : tony 5 # @File : tuple_set 6 # @Version : 1.0 7 8 9 10 11 # 弄个tuple尝尝

集合中 复制实体 赋值失败问题

if(applySystem.equals("OMS")||applySystem.equals("WBMS")){ baseSiteMappingVos.add(en); }else if("ALL".equals(applySystem)){ en.setApplySystem("OMS"); baseSiteMappingVos.add(en); BaseSiteMappingVo en3 = new BaseSiteM

2016.5.23 用反射技术为实体类变量赋值、取值

clobj是任意一个数据库表对应的实体类空白实例 TERMINAL_PRO clobj= new TERMINAL_PRO(); DataRow row = dtt.Rows[0]; Type t = clobj.GetType(); foreach (PropertyInfo pi in t.GetProperties()) //不用考虑属性的类型 { string name = pi.Name; //获得此属性名称 if (dtt.Columns.Contains(name)) { obje

Entity Framework 教程——Entity Framework中的实体类型

Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. POCO Entity (Plain Old CLR Object): POCO类是不依赖任何框架的类型,如同其他正常的一般类型,我们称之为"Plain Old CLR Objects"(这里不知道怎么翻译,普通的CLR对象?古老的CLR对象?大概意思就是没有什么特殊的对象吧). POC