这可以通过利用
Type newObjectType = orgObject.GetType()
然后调用 Activator.CreateInstance(newObjectType)。然后,您要做的是遍历对象的所有属性并将它们设置在新对象上。这也可以通过反射来完成。
遍历 orgObject.GetType().GetProperties() 中的每个 PropertyInfo 并在新对象上设置值。
这确实应该创建对象的“深层”副本,与它的类型无关。
编辑:我上面解释的方法的未经测试的代码示例。
Type newObjectType = orgObject.GetType();
object newObject = Activator.CreateInstance(newObjectType);
foreach (var propInfo in orgObject.GetType().GetProperties())
{
object orgValue = propInfo.GetValue(orgObject, null);
// set the value of the new object
propInfo.SetValue(newObject, orgValue, null);
}
希望你有一些清楚!