获得徽章 0
#每天一个知识点#
第一类、针对简单引用类型方式
这类方法只对简单引用类型有效,如果类型中包含引用类型的属性字段,则无效。
1、MemberwiseClone方法
2、with表达式
第二类、手动方式
这类方法都是需要手动处理的,简单又复杂。
1、纯手工
2、ICloneable接口
第三类、序列化方式
这类方法核心思想就是先序列化再反序列化,这里面也可以分为三小类:二进制类、Xml类、Json类。
1、二进制序列化器
1.1.BinaryFormatter(已弃用)
1.2.MessagePackSerializer
2、Xml序列化器
2.1. DataContractSerializer
2.2. XmlSerializer
3、Json序列化器
第四类、第三方库方式
这类方法使用简单,方案成熟,比较适合项目上使用。
1、AutoMapper
2、DeepCloner
3、FastDeepCloner
第五类、扩展视野方式
这类方法都是半成品方法,仅供参考,提供思路,扩展视野,不适合项目使用,当然你可以把它们完善,各种特殊情况问题都处理好也是可以在项目上使用的。
1、反射
2、Emit
3、表达式树
第一类、针对简单引用类型方式
这类方法只对简单引用类型有效,如果类型中包含引用类型的属性字段,则无效。
1、MemberwiseClone方法
2、with表达式
第二类、手动方式
这类方法都是需要手动处理的,简单又复杂。
1、纯手工
2、ICloneable接口
第三类、序列化方式
这类方法核心思想就是先序列化再反序列化,这里面也可以分为三小类:二进制类、Xml类、Json类。
1、二进制序列化器
1.1.BinaryFormatter(已弃用)
1.2.MessagePackSerializer
2、Xml序列化器
2.1. DataContractSerializer
2.2. XmlSerializer
3、Json序列化器
第四类、第三方库方式
这类方法使用简单,方案成熟,比较适合项目上使用。
1、AutoMapper
2、DeepCloner
3、FastDeepCloner
第五类、扩展视野方式
这类方法都是半成品方法,仅供参考,提供思路,扩展视野,不适合项目使用,当然你可以把它们完善,各种特殊情况问题都处理好也是可以在项目上使用的。
1、反射
2、Emit
3、表达式树
展开
评论
1