Class ValueObjectComparer<TSelf>
Namespace: AdCodicem.ValueObjects.EntityFrameworkCore
Assembly: AdCodicem.ValueObjects.EntityFrameworkCore.dll
Compares value objects using their own equality rather than the underlying value's.
public sealed class ValueObjectComparer<TSelf> : ValueComparer<TSelf>, IEqualityComparer, IEqualityComparer<object>, IEqualityComparer<TSelf> where TSelf : struct, IEquatable<TSelf>
Type Parameters
TSelf
Value object type.
Inheritance
object ← ValueComparer ← ValueComparer<TSelf> ← ValueObjectComparer<TSelf>
Implements
IEqualityComparer, IEqualityComparer<object>, IEqualityComparer<TSelf>
Inherited Members
ValueComparer<TSelf>.Equals(object?, object?), ValueComparer<TSelf>.GetHashCode(object?), ValueComparer<TSelf>.Equals(TSelf, TSelf), ValueComparer<TSelf>.GetHashCode(TSelf), ValueComparer<TSelf>.Snapshot(object?), ValueComparer<TSelf>.Snapshot(TSelf), ValueComparer<TSelf>.ObjectEqualsExpression, ValueComparer<TSelf>.Type, ValueComparer<TSelf>.EqualsExpression, ValueComparer<TSelf>.HashCodeExpression, ValueComparer<TSelf>.SnapshotExpression, ValueComparer.GetGenericSnapshotMethod(Type), ValueComparer.Equals(object?, object?), ValueComparer.GetHashCode(object?), ValueComparer.Snapshot(object?), ValueComparer.ExtractEqualsBody(Expression, Expression), ValueComparer.ExtractHashCodeBody(Expression), ValueComparer.ExtractSnapshotBody(Expression), ValueComparer.Add(HashCode, int), ValueComparer.CreateDefault(Type, bool), ValueComparer.CreateDefault<T>(bool), ValueComparer.Type, ValueComparer.EqualsExpression, ValueComparer.ObjectEqualsExpression, ValueComparer.HashCodeExpression, ValueComparer.SnapshotExpression, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString()
Remarks
This matters as soon as a value object declares a comparison other than ordinal: without it, change tracking
would consider ORD-42 and ord-42 different for a case-insensitive reference and issue an
UPDATE that changes nothing. A value object is immutable, so the snapshot is the value itself.
Constructors
ValueObjectComparer()
Initializes a new instance of the
public ValueObjectComparer()