예제 #1
0
        internal static bool TryGetValueEquals <T>(T x, T y, MemberSettings settings, out bool result)
        {
            if (ReferenceEquals(x, y))
            {
                result = true;
                return(true);
            }

            if (x == null || y == null)
            {
                result = false;
                return(true);
            }

            if (x.GetType() != y.GetType())
            {
                result = false;
                return(true);
            }

            if (settings.TryGetComparer(x.GetType(), out var comparer))
            {
                result = comparer.Equals(x, y);
                return(true);
            }

            if (settings.IsEquatable(x.GetType()))
            {
                result = Equals(x, y);
                return(true);
            }

            result = false;
            return(false);
        }
예제 #2
0
            private static TypeErrors CreateErrors(Type type, MemberSettings settings, MemberPath path)
            {
                if (settings.IsEquatable(type) || settings.TryGetComparer(type, out _))
                {
                    return(null);
                }

                var errors = VerifyCore(settings, type)
                             .VerifyRecursive(type, settings, path, GetNodeErrors)
                             .Finnish();

                return(errors);
            }