namespace EgwCoreLib.Lux.Core { public static class CloneExtensions { #region Public Methods /// /// Clone profondo tramite serializzazione/deserializzazione di obj generici /// /// /// /// public static T DeepClone(this T obj) { // Configurazione serializzatore JSON per risolvere errore di loop circolare var JSSettings = new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; var json = JsonConvert.SerializeObject(obj, JSSettings); return JsonConvert.DeserializeObject(json)!; } /// /// Comparatore statico tra entità /// /// /// /// /// public static bool IsChanged(T original, T edited) => !EqualityComparer.Default.Equals(original, edited); #endregion Public Methods } }