using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace HyperCube { public static class Compare { public static Dictionary SimpleCompare(T object1, T object2) { var props = typeof(T).GetProperties().Where(pi => pi.CanRead); Dictionary result = new(); foreach (var prop in props) { var val1 = prop.GetValue(object1, null); var val2 = prop.GetValue(object2, null); if (prop.PropertyType == typeof(DateTime)) { TimeSpan timeSpan = (DateTime)val1 - (DateTime)val2; if (timeSpan.TotalDays != 0) result[prop.Name] = prop; } else if (val1?.ToString() != val2?.ToString()) result[prop.Name] = prop; } return result; } } }