/// <summary> /// Adds a new comparer. /// </summary> /// <param name="comparer">The comparer to add.</param> public static void AddFieldValueEqualityComparer(IFieldValueEqualityComparer comparer) { if (EqualityComparers.All(o => o.GetType() != comparer.GetType())) { EqualityComparers.Add(comparer); } }
private static bool MatchesComparer(ref object lhsField, ref object rhsField, object lhsParent, object rhsParent, FieldInfo field, out IFieldValueEqualityComparer comparer) { comparer = null; foreach (var equalityComparer in EqualityComparers) { if (equalityComparer.CanCompare(ref lhsField, ref rhsField, lhsParent, rhsParent, field)) { comparer = equalityComparer; break; } } return(comparer != null); }
private static bool MatchesComparer(object lhs, object rhs, out IFieldValueEqualityComparer comparer) { comparer = EqualityComparers.FirstOrDefault(c => c.CanCompare(lhs, rhs)); return(comparer != null); }