C#在PCL中克隆对象

cloning_by_silverstormblackfang-d5bkptt.

通常在克隆在.NET中的对象时,我只需使用二进制流,这将自动执行对象的深副本。但是,当在PCL上编写代码时,我们没有BinaryStram,因此必须查找新选项。我不是通过在每个对象上实现副本构造函数来完成此操作的大粉丝,因为它是一个错误的任务,因为它将其离开DEVS以新的或更改为现有类来实现它。

因此,手工的下一个最佳选择是使用另一个流编写者,我开始使用了 JSON.NET. 对于任务,因为它可用于所有主要移动平台以及服务器对象。因此,我们现在可以放心,现在它将在我们的所有平台上运行。另一个我喜欢将其作为对象的扩展方法实现实现它。所以让我们看一下这将是如何完成的:

public static T Clone<T>(this T source){    if (Object.ReferenceEquals(source, null))    {        return default(T);    }    // In the PCL we do not have the BinaryFormatter    return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source));}

所以从现在开始,我们需要克隆/深度复制一个对象,我们可以通过在所需对象上调用克隆方法来简单地调用它。

var original = new NestedObject();var clone = original.Clone();

Hth.

Updated: