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); } } }