克隆一个我不能添加iclonable的对象

本文关键字:添加 不能 iclonable 对象 一个 | 更新日期: 2023-09-27 18:06:58

我试图创建一个对象的浅拷贝(新实例),而无需手动设置每个字段。这个对象不是我有能力修改的类型,所以我不能进入这个对象并实现iclonable…我有点卡住了。是否有一种简单的方法来克隆对象,或者我必须实现一些clone()方法来简单地将每个字段复制到一个新对象中?

提前感谢您的帮助!

克隆一个我不能添加iclonable的对象

使用反射来查看对象上的字段,并使用它来填充新实例。

这对存在不接受实参的构造函数做了一些假设。

Type t = typeof(typeToClone);
var fields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var copy = Activator.CreateInstance(t);
for(int i = 0; i < fields.Length; i++)
  fields[i].SetValue(copy, fields[i].GetValue(existing));