Пример #1
0
        private static bool EnumerableEquals(
            object x,
            object y,
            MemberSettings settings,
            ReferencePairCollection referencePairs)
        {
            if (ListEqualByComparer.TryGetOrCreate(x, y, out var comparer) ||
                ReadOnlyListEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                SetEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                ArrayEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                DictionaryEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                ReadOnlyDictionaryEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                EnumerableEqualByComparer.TryGetOrCreate(x, y, out comparer))
            {
                return(comparer.Equals(x, y, settings, referencePairs));
            }

            throw Throw.ShouldNeverGetHereException($"Could not compare enumerables of type {x.GetType().PrettyName()}");
        }
Пример #2
0
        private static bool EnumerableEquals(
            object x,
            object y,
            MemberSettings settings,
            ReferencePairCollection referencePairs)
        {
            EqualByComparer comparer;
            if (ListEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                ReadOnlyListEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                SetEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                ArrayEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                DictionaryEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                ReadOnlyDictionaryEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
                EnumerableEqualByComparer.TryGetOrCreate(x, y, out comparer))
            {
                return comparer.Equals(x, y, settings, referencePairs);
            }

            throw Throw.ShouldNeverGetHereException($"Could not compare enumerables of type {x.GetType().PrettyName()}");
        }
Пример #3
0
 /// <summary>
 /// Compare <paramref name="x"/> with <paramref name="y"/>
 /// </summary>
 /// <param name="x">The x value.</param>
 /// <param name="y">The y value.</param>
 /// <param name="settings">The settings that specifies how comparison is performed.</param>
 /// <param name="referencePairs">
 /// The already compared items. This is used to stop infinite recursion when there are reference loops.
 /// </param>
 /// <returns>True if <paramref name="x"/> and <paramref name="y"/> are equal.</returns>
 public abstract bool Equals(
     object x,
     object y,
     MemberSettings settings,
     ReferencePairCollection referencePairs);
Пример #4
0
 /// <summary>
 /// Compare <paramref name="x"/> with <paramref name="y"/>
 /// </summary>
 /// <param name="x">The x value.</param>
 /// <param name="y">The y value.</param>
 /// <param name="settings">The settings that specifies how comparison is performed.</param>
 /// <param name="referencePairs">
 /// The already compared items. This is used to stop infinite recursion when there are reference loops.
 /// </param>
 /// <returns>True if <paramref name="x"/> and <paramref name="y"/> are equal.</returns>
 public abstract bool Equals(
     object x,
     object y,
     MemberSettings settings,
     ReferencePairCollection referencePairs);