//Methods public bool Equals(IDictionary <TKey, TValue> left, IDictionary <TKey, TValue> right) { //Same reference if (left == right) { return(true); } //Null else if (left is null || right is null) { return(false); } //Keys don't match var keysComparer = new EnumerableEqualityComparer <TKey>(_keyComparer); if (!keysComparer.Equals(left.Keys, right.Keys)) { return(false); } //Values don't match foreach (var(key, value) in left) { var rightValue = right[key]; if (!_valueComparer.Equals(value, rightValue)) { return(false); } } return(true); }
public int GetHashCode(TEntity entity) { if (entity is null) { return(default(TEntity).GetHashCode()); } var primitiveValues = GetPrimitiveProperties(entity).Select(p => p.Value); var enumerableComparer = new EnumerableEqualityComparer <object>(); return(enumerableComparer.GetHashCode(primitiveValues)); }