Мне нужно проверить объект (не все свойства), с примитивными типами все работает правильно, но с типами объектов метод Object.Equals(object a, object b)
возвращает неправильный результат.
public static bool IsModified<T>(T newProp, T oldProp) where T : class
{
List<string> IgnoreProps = new List<string> { "UpdatedOn", "UpdatedById", "UpdatedBy", "RowVersion" };
Type type = typeof(T);
foreach(PropertyInfo prop in type.GetProperties())
{
if (IgnoreProps.Contains(prop.Name))
{
continue;
}
var propType = prop.PropertyType;
var newValue = prop.GetValue(newProp);
var oldValue = prop.GetValue(oldProp);
newValue = Convert.ChangeType(newValue, propType);
oldValue = Convert.ChangeType(oldValue, propType);
var a = Equals(newValue, oldValue); // return incorrect value
if (!Equals(newValue, oldValue))
{
return true;
}
}
return false;
}
Первый объект
Второй объект
Equals
? - person Ackdari   schedule 01.09.2020