namespace System
{
using Newtonsoft.Json;
public static class CloneObjectExtension
{
///
/// Caution: we should check performance for using it for cloning a collection of small objects such as scenario details or allocations
///
///
///
///
public static T Clone(this T source)
{
if (ReferenceEquals(source, null))
return default(T);
var jsonObject = JsonConvert.SerializeObject(source);
if (string.IsNullOrWhiteSpace(jsonObject))
return default(T);
return JsonConvert.DeserializeObject(jsonObject);
}
}
}