DeepCloner深度复制

安装:

Install-Package DeepCloner

示例代码:

using Force.DeepCloner;

var personA = new Person() { Name = "张三", Address = new Address() { City = "杭州", Street = "采荷" } };
var personB = personA.DeepClone();
personA.Name = "李四";
personA.Address.City = "上海";

Console.WriteLine(personA.Name);
Console.WriteLine(personA.Address.City);
Console.WriteLine(personB.Name);
Console.WriteLine(personB.Address.City);

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string City { get; set; }
    public string Street { get; set; }
}

其它示例

var clone = new { Id = 1, Name = "222" }.DeepClone();
// public class Tree { public Tree ParentTree;  }
var t = new Tree();
t.ParentTree = t;
var cloned = t.DeepClone();
Console.WriteLine(cloned.ParentTree == cloned); // True
var date = DateTime.Now;
var obj = (object)date;
obj.DeepClone().GetType(); // DateTime

浅拷贝:

var clone = new { Id = 1, Name = "222" }.ShallowClone();
public class Derived : BaseClass
{
	public Derived(BaseClass parent)
	{
		parent.DeepCloneTo(this); // now this has every field from parent
	}
}
public class Base {}
public class Derived1 : Base {}
public class Derived2 : Base {}

var b = (Base)new Derived1(); // casting derived to parent
var derived2 = new Derived2();
// will compile, but will throw an exception in runtime, Derived1 is not parent for Derived2
b.DeepCloneTo(derived2); 
posted @   wzwyc  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示