可以将对象序列化为JSON并立即将其反序列化为原始对象类型,这是深度复制对象的有效方法。
我主要是针对像C#和Java这样的语言,但不同语言会有所不同吗?
执行此操作可能会出现任何问题吗?
答案 0 :(得分:0)
似乎是合乎逻辑的,但可能效率低下。我认为有问题的对象只是一个简单的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();
您可以将此代码包含在基类中,以便您访问所有对象的复制功能。