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