7

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

提前感谢您的帮助!

4

1 回答 1

7

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

这对不带参数的构造函数的存在做出了一些假设。

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));
于 2011-08-30T19:21:30.680 回答