gpt4 book ai didi

c# - 克隆任意对象的函数

转载 作者:太空狗 更新时间:2023-10-30 00:54:36 24 4
gpt4 key购买 nike

我正在寻找一种方法来克隆一个在编译时(或者我认为是运行时)未知的对象。问题的确切措辞是“编写一个可以克隆任意对象的函数”,例如

  • 将未知对象传递给函数。
  • 返回对象的深拷贝。

我猜我需要使用反射来读取函数和变量,然后了解如何创建新对象并将这些值分配给它。我可以只使用 Type.GetType() 来查找类型并创建一个新实例,然后使用这个 known 对象的复制构造函数。但是我不确定给定的类是否会实现一个(Deep),或者问题是否要求这样的解决方案(我不明白所需的结果是什么,这无济于事!)。

有人可以指导我朝着正确的方向前进吗?需要类/接口(interface),如果你觉得慷慨,可以使用伪代码来实现这个目标吗?

最佳答案

您可以简单地序列化反序列化一个对象来制作克隆。
以下函数将执行此操作:

public object Clone(object obj)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, obj);
ms.Position = 0;
object obj_clone = bf.Deserialize(ms);
ms.Close();
return obj_clone;
}

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com