通过序列化为 JSON 并立即反序列化来深层复制对象



将对象序列化为 JSON 并立即将其反序列化回原始对象类型是否可以是深层复制对象的有效方法。

我主要要求像C#和Java这样的语言,但在不同的语言中会有所不同吗?

这样做可能会出现任何问题吗?

看起来合乎逻辑,但可能有点低效。我认为有问题的对象只是一个简单的poco。

你也可以使用反射来做到这一点。

此代码将复制对象的属性并返回新副本的实例

public TTranslateTo TranslateTo<TTranslateTo>()
{
var target = Activator.CreateInstance<TTranslateTo>();
foreach (var p1 in GetObjectTypeProperties)
{
var p2 =
target.GetType()
.GetProperties()
.FirstOrDefault(p => string.Equals(p.Name, p1.Name, StringComparison.CurrentCultureIgnoreCase) && p.PropertyType == p1.PropertyType);
p2?.SetValue(target, p1.GetValue(this));
}
return target;
}
private IEnumerable<PropertyInfo> GetObjectTypeProperties => GetType()
.GetProperties();

您可以将此代码包含在基类中,以便访问所有对象上的复制函数。

最新更新