Я работаю над методом, который сравнивает два объекта, используя отражение. Типы объектов - это объекты, созданные из структуры сущностей. Когда я использую GetProperties (), я получаю свойства EntityCollection и EntityReference. Мне нужны только те свойства, которые принадлежат объекту, а не какие-либо связанные свойства или ссылки из внешних ключей.
Я пробовал следующее Как получить все имена свойств в сущности? .
Я думал о передаче массива свойств для сравнения, но я не хочу вводить их для каждого типа объекта. Я открыт для некоторых предложений, даже тех, которые не используют рефлексию.
public bool CompareEntities<T>(T oldEntity, T newEntity)
{
bool same = true;
PropertyInfo[] properties = oldEntity.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
var oldValue = property.GetValue(oldEntity, null);
var newValue = property.GetValue(newEntity, null);
if (oldValue != null && newValue != null)
{
if (!oldValue.Equals(newValue))
{
same = false;
break;
}
}
else if ((oldValue == null && newValue != null) || (oldValue != null && newValue == null))
{
same = false;
break;
}
}
return same;
}