c# - 在 C# 中克隆对象

标签 c# deep-copy cloning

我用虚拟属性定义了下一个类:

public class Order: BaseEPharmObject
{
    public Order()
    {
    }

    public virtual Guid Id { get; set; }
    public virtual DateTime Created { get; set; }
    public virtual DateTime? Closed { get; set; }
    public virtual OrderResult OrderResult { get; set; }
    public virtual decimal Balance { get; set; }
    public virtual Customer Customer { get; set; }
    public virtual Shift Shift { get; set; }
    public virtual Order LinkedOrder { get; set; }
    public virtual User CreatedBy { get; set; }
    public virtual decimal TotalPayable { get; set; }

    public virtual IList<Transaction> Transactions { get; set; }
    public virtual IList<Payment> Payments { get; set; }
}

并尝试克隆该派生类的对象。如何在基类中实现深拷贝权限?

最佳答案

如果你的类型是 serializable你可以使用 BinaryFormatter :

public static T DeepClone<T>(T obj)
{
    using (var stream = new MemoryStream())
    {
        var formatter = new BinaryFormatter();
        formatter.Serialize(stream, obj);
        stream.Position = 0;
        return (T)formatter.Deserialize(stream);
    }
}

关于c# - 在 C# 中克隆对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585652/

相关文章:

java - 无法克隆数据

c# - WinRT 上下文中与 Async 的线程关联

c# - 在 WebAPI 模型属性中拒绝 HTML

python - 如果父类(super class)自定义了深拷贝,如何定义子类的深拷贝

c# - 在几个类中干燥 ICloneable 的实现

Java:如何将克隆对象转换为其原始子类?

c# - 我的递归异步函数会在 UI 线程上运行吗?

c# - C# Visual Studio 2017 版本 15.1.1 中的 Linq 查询内部的 string Text.ToUpper() 速度较慢

Python:浅拷贝构造函数和深拷贝构造函数的实现

javascript - 克隆数据时指定目标?