У меня есть объект, который я создаю, я беру экземпляр объекта и модифицированный объект. Это позволяет мне сохранять исходные данные для сравнения с модифицированными данными. Вопрос в том, каким будет идеальный подход? Должен ли я реализовать IEquatable
в качестве переопределения на Object.Equals
или реализовать ICompare
? Моя первоначальная реализация была:Сравнение объекта
var properties = typeof(TEntity).GetProperties();
foreach(var property in properties)
{
var initialEntity = original.GetType().GetProperty(property.Name).GetValue(original, null);
var modifiedEntity = userChange.GetType().GetProperty(property.Name).GetValue(userChange, null);
if(initialEntity.Equals(modifiedEntity) == false && !ignore.Contains(property.Name))
{
// Do Something
}
}
Мое понимание было то, что он будет возвращать boolean
, и в этом случае было бы сравнить по ценности равенства, я предполагаю, хотя это сравнение на основе эталонного равенства.
Поскольку он никогда не различает, он остается равным при любых обстоятельствах.
уверены, что это не тот же пример? – George
Являются ли эти объекты linq? если да, то ObjectStateManager уже содержит все изменения, внесенные вами. – Gusman
Возможно, вы захотите проверить какой-то проект, который я опубликовал несколько месяцев назад: [TrackerDog] (http://matiasfidemraizer.com/trackerdog). Он делает то, что вы хотите достичь уже! –